// Copyright (c) 2010-2014 SharpDX - Alexandre Mutel
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

//------------------------------------------------------------------------------
// <auto-generated>
//     Types declaration for SharpDX.DirectSound namespace.
//     This code was generated by a tool.
//     Date : 28/03/2015 21:51:13
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Security;
namespace SharpDX.DirectSound {

// Disable warning : XML comment is not placed on a valid language element
#pragma warning disable 419
#pragma warning disable 1587
#pragma warning disable 1574
    /// <summary>	
    /// <p>The IDirectSoundCaptureFXAec8 interface is used to set and retrieve parameters on a capture buffer that supports acoustic echo cancellation. This interface requires Microsoft Windows XP or later operating systems.</p><p>IDirectSoundCaptureFXAec8 is a define for <see cref="SharpDX.DirectSound.AcousticEchoCancel"/>. The interface names are interchangeable.</p><p>This interface is obtained by calling GetObjectInPath on the buffer that supports the effect.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundCaptureFXAec8 interface exposes the following methods.</p>IDirectSoundCaptureFXAec8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundCaptureFXAec8::GetAllParameters </td><td>The IDirectSoundCaptureFXAec8::GetAllParameters method retrieves the acoustic echo cancellation parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundCaptureFXAec8::GetStatus </td><td>The IDirectSoundCaptureFXAec8::GetStatus method retrieves the status of the effect.	
    /// </td></tr> <tr><td>IDirectSoundCaptureFXAec8::Reset </td><td>The IDirectSoundCaptureFXAec8::Reset method resets the effect to its initial state.	
    /// </td></tr> <tr><td>IDirectSoundCaptureFXAec8::SetAllParameters </td><td>The IDirectSoundCaptureFXAec8::SetAllParameters method sets the acoustic echo cancellation parameters of a buffer.	
    /// </td></tr> </table><p>The LPDIRECTSOUNDCAPTUREFXAEC8 type is defined as a reference to the IDirectSoundCaptureFXAec8 interface:</p><pre> typedef struct IDirectSoundCaptureFXAec8 *LPDIRECTSOUNDCAPTUREFXAEC8;	
    /// </pre>Info<p>Operating System: Requires Microsoft WindowsXP or later.</p> <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXAec']/*"/>	
    /// <msdn-id>ee418187</msdn-id>	
    /// <unmanaged>IDirectSoundCaptureFXAec</unmanaged>	
    /// <unmanaged-short>IDirectSoundCaptureFXAec</unmanaged-short>	
    [Guid("ad74143d-903d-4ab7-8066-28d363036d65")]
    public partial class AcousticEchoCancel : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.AcousticEchoCancel"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public AcousticEchoCancel(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.AcousticEchoCancel"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.AcousticEchoCancel(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.AcousticEchoCancel(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the acoustic echo cancellation parameters of a buffer.	
        /// </summary>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXAec::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxaec8.idirectsoundcapturefxaec8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXAec::GetAllParameters([Out] DSCFXAec* pDscFxAec)</unmanaged>
        public SharpDX.DirectSound.AcousticEchoCancelSettings AllParameters {
                get { SharpDX.DirectSound.AcousticEchoCancelSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(value); }
        }
        
        /// <summary>	
        /// The IDirectSoundCaptureFXAec8::GetStatus method retrieves the status of the effect.	
        /// </summary>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table> <p>The three least significant bits in *pdwStatus describe the convergence history; that is, the success of the effect in canceling the echo. The convergence history can be used by the application to determine if the algorithm has converged and remained in the converged state since it started processing data.</p> <p>Initially, the AEC algorithm sets the three lower bits to 0 for the uninitialized state (<see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized"/>). When the AEC algorithm has converged, the convergence history is switched to the <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryContinuouslyConverged"/> state. If the AEC algorithm ever loses convergence, the convergence history is then transitioned to the <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged"/> state. A transition from <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized"/> to <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged"/> is also possible. The convergence history remains in the <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged"/> state until the algorithm is reset or timely data is no longer arriving on the capture or render stream.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXAec::GetStatus']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxaec8.idirectsoundcapturefxaec8.getstatus</msdn-id>	
        /// <unmanaged>GetStatus</unmanaged>	
        /// <unmanaged-short>GetStatus</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXAec::GetStatus([Out] DSCFX_AEC_STATUS* pdwStatus)</unmanaged>
        public SharpDX.DirectSound.AcousticEchoCancelStatus Status {
                get { SharpDX.DirectSound.AcousticEchoCancelStatus __output__; GetStatus(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the acoustic echo cancellation parameters of a buffer.	
        /// </summary>	
        /// <param name="dscFxAecRef"><dd> Address of a <see cref="SharpDX.DirectSound.AcousticEchoCancelSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following values.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXAec::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxaec8.idirectsoundcapturefxaec8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXAec::SetAllParameters([In] const DSCFXAec* pDscFxAec)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureFXAec::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(SharpDX.DirectSound.AcousticEchoCancelSettings dscFxAecRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &dscFxAecRef,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the acoustic echo cancellation parameters of a buffer.	
        /// </summary>	
        /// <param name="dscFxAecRef"><dd> Address of a <see cref="SharpDX.DirectSound.AcousticEchoCancelSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following values.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table> <p>If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXAec::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxaec8.idirectsoundcapturefxaec8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXAec::GetAllParameters([Out] DSCFXAec* pDscFxAec)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureFXAec::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.AcousticEchoCancelSettings dscFxAecRef) {
            unsafe {
                dscFxAecRef = new SharpDX.DirectSound.AcousticEchoCancelSettings();
                SharpDX.Result __result__;
                fixed (void* dscFxAecRef_ = &dscFxAecRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dscFxAecRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The IDirectSoundCaptureFXAec8::GetStatus method retrieves the status of the effect.	
        /// </summary>	
        /// <param name="tatusRef"><dd> Address of a DWORD variable to receive the status. The following flags are defined. See Remarks. <table> <tr><td>Constant</td><td>Value</td></tr> <tr><td><see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized"/></td><td>0x0</td></tr> <tr><td><see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryContinuouslyConverged"/></td><td>0x1</td></tr> <tr><td><see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged"/></td><td>0x2</td></tr> <tr><td><see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.CurrentlyConverged"/></td><td>0x8</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following values.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table> <p>The three least significant bits in *pdwStatus describe the convergence history; that is, the success of the effect in canceling the echo. The convergence history can be used by the application to determine if the algorithm has converged and remained in the converged state since it started processing data.</p> <p>Initially, the AEC algorithm sets the three lower bits to 0 for the uninitialized state (<see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized"/>). When the AEC algorithm has converged, the convergence history is switched to the <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryContinuouslyConverged"/> state. If the AEC algorithm ever loses convergence, the convergence history is then transitioned to the <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged"/> state. A transition from <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryUninitialized"/> to <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged"/> is also possible. The convergence history remains in the <see cref="SharpDX.DirectSound.AcousticEchoCancelStatus.HistoryPreviouslyDiverged"/> state until the algorithm is reset or timely data is no longer arriving on the capture or render stream.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXAec::GetStatus']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxaec8.idirectsoundcapturefxaec8.getstatus</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXAec::GetStatus([Out] DSCFX_AEC_STATUS* pdwStatus)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureFXAec::GetStatus</unmanaged-short>	
        internal void GetStatus(out SharpDX.DirectSound.AcousticEchoCancelStatus tatusRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* tatusRef_ = &tatusRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, tatusRef_,((void**)(*(void**)_nativePointer))[5]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The IDirectSoundCaptureFXAec8::Reset method resets the effect to its initial state.	
        /// </summary>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_OUTOFMEMORY.</p></returns>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table> <p>Applications should not reset an effect except when necessary because it has entered an incorrect state. This might be done in response to user input. An effect must not be reset arbitrarily at startup, because another application might be using the same effect.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXAec::Reset']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxaec8.idirectsoundcapturefxaec8.reset</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXAec::Reset()</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureFXAec::Reset</unmanaged-short>	
        public void Reset() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[6]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The <see cref="SharpDX.DirectSound.CaptureBuffer"/> interface is used to manipulate sound capture buffers.</p><p>To obtain the <see cref="SharpDX.DirectSound.CaptureBuffer"/> interface, call the IDirectSoundCapture8::CreateCaptureBuffer method to obtain <see cref="SharpDX.DirectSound.CaptureBufferBase"/>, then pass IID_IDirectSoundCaptureBuffer8 to IDirectSoundCaptureBuffer::QueryInterface.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the <see cref="SharpDX.DirectSound.CaptureBuffer"/> interface exposes the following methods, arranged by category.</p>Capture Management<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundCaptureBuffer8::Lock </td><td>The Lock method locks a portion of the buffer. Locking the buffer returns references into the buffer, allowing the application to read or write audio data into memory.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::Start </td><td>The Start method begins capturing data into the buffer. If the buffer is already capturing, the method has no effect.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::Stop </td><td>The Stop method stops the buffer so that it is no longer capturing data. If the buffer is not capturing, the method has no effect.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::Unlock </td><td>The Unlock method unlocks the buffer.	
    /// </td></tr> </table>Effects<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureBuffer.GetEffectStatus"/> </td><td>The GetFXStatus method retrieves the status of capture effects.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureBuffer.GetEffect"/> </td><td>The GetObjectInPath method retrieves an interface to an effect object associated with the buffer.	
    /// </td></tr> </table>Initialization<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundCaptureBuffer8::Initialize </td><td>The Initialize method initializes a capture buffer object. Because the IDirectSoundCapture8::CreateCaptureBufferIDirectSoundCapture8::CreateCaptureBuffer	
    /// </td></tr> </table>Information<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundCaptureBuffer8::GetCaps </td><td>The GetCaps method retrieves the capabilities of the buffer.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::GetCurrentPosition </td><td>Address of a variable that receives the offset from the start of the buffer, in bytes, of the capture cursor. The parameter can be <c>null</c> if this value is not wanted.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::GetFormat </td><td>The GetFormat method retrieves the waveform format of the capture buffer.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::GetStatus </td><td>The GetStatus method retrieves the status of the capture buffer.	
    /// </td></tr> </table><p>The LPDIRECTSOUNDCaptureBuffer8 type is defined as a reference to the <see cref="SharpDX.DirectSound.CaptureBuffer"/> interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.CaptureBuffer"/> *LPDIRECTSOUNDCaptureBuffer8;	
    /// </pre>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer8']/*"/>	
    /// <msdn-id>ee418162</msdn-id>	
    /// <unmanaged>IDirectSoundCaptureBuffer8</unmanaged>	
    /// <unmanaged-short>IDirectSoundCaptureBuffer8</unmanaged-short>	
    [Guid("00990df4-0dbb-4872-833e-6d303e80aeb6")]
    public partial class CaptureBuffer : SharpDX.DirectSound.CaptureBufferBase {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.CaptureBuffer"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public CaptureBuffer(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.CaptureBuffer"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.CaptureBuffer(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.CaptureBuffer(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetObjectInPath method retrieves an interface to an effect object associated with the buffer.	
        /// </summary>	
        /// <param name="rguidObject"><dd> Value of type REFGUID that specifies the unique class identifier of the object being searched for, such as <see cref="SharpDX.DirectSound.CaptureEffectGuid.AcousticEchoCancellationCaptureEffect"/>. </dd></param>	
        /// <param name="index"><dd> Index of the object within objects of that class in the path. See Remarks.  </dd></param>	
        /// <param name="rguidInterface"><dd> Unique identifier of the desired interface, such as IID_IDirectSoundCaptureFXAec8. </dd></param>	
        /// <param name="objectOut"><dd> Address of a variable that receives the desired interface reference. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OBJECTNOTFOUND </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The value in dwIndex is the index of the object within the array of effects in the <see cref="SharpDX.DirectSound.CaptureBufferDescription"/> structure passed to DirectSoundFullDuplexCreate8 or IDirectSoundCapture8::CreateCaptureBuffer.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer8::GetObjectInPath']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getobjectinpath</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer8::GetObjectInPath([In] const GUID&amp; rguidObject,[In] unsigned int dwIndex,[In] const GUID&amp; rguidInterface,[Out] void** ppObject)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer8::GetObjectInPath</unmanaged-short>	
        internal void GetEffect(System.Guid rguidObject, int index, System.Guid rguidInterface, out System.IntPtr objectOut) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* objectOut_ = &objectOut)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &rguidObject, index, &rguidInterface, objectOut_,((void**)(*(void**)_nativePointer))[12]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetFXStatus method retrieves the status of capture effects.	
        /// </summary>	
        /// <param name="effectsCount"><dd> Number of elements in the pdwFXStatus array.  </dd></param>	
        /// <param name="xStatusRef"><dd> Address of an array of DWORD variables that receive the status of each effect. This should contain the same number of elements as the array passed in the dwFXCount member of the <see cref="SharpDX.DirectSound.CaptureBufferDescription"/> structure passed to DirectSoundFullDuplexCreate8 or IDirectSoundCapture8::CreateCaptureBuffer. The possible values returned in the array are as follows:<table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DSCFXR_LOCHARDWARE</td><td>Effect is instantiated in hardware.</td></tr> <tr><td>DSCFXR_LOCSOFTWARE</td><td>Effect is instantiated in software.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer8::GetFXStatus']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getfxstatus</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer8::GetFXStatus([In] unsigned int dwEffectsCount,[Out, Buffer] DSCFX_ENUM* pdwFXStatus)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer8::GetFXStatus</unmanaged-short>	
        internal void GetEffectStatus(int effectsCount, SharpDX.DirectSound.CaptureEffectResult[] xStatusRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* xStatusRef_ = xStatusRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, effectsCount, xStatusRef_,((void**)(*(void**)_nativePointer))[13]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The <see cref="SharpDX.DirectSound.CaptureBuffer"/> interface is used to manipulate sound capture buffers.</p><p>To obtain the <see cref="SharpDX.DirectSound.CaptureBuffer"/> interface, call the IDirectSoundCapture8::CreateCaptureBuffer method to obtain <see cref="SharpDX.DirectSound.CaptureBufferBase"/>, then pass IID_IDirectSoundCaptureBuffer8 to IDirectSoundCaptureBuffer::QueryInterface.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the <see cref="SharpDX.DirectSound.CaptureBuffer"/> interface exposes the following methods, arranged by category.</p>Capture Management<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundCaptureBuffer8::Lock </td><td>The Lock method locks a portion of the buffer. Locking the buffer returns references into the buffer, allowing the application to read or write audio data into memory.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::Start </td><td>The Start method begins capturing data into the buffer. If the buffer is already capturing, the method has no effect.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::Stop </td><td>The Stop method stops the buffer so that it is no longer capturing data. If the buffer is not capturing, the method has no effect.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::Unlock </td><td>The Unlock method unlocks the buffer.	
    /// </td></tr> </table>Effects<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureBuffer.GetEffectStatus"/> </td><td>The GetFXStatus method retrieves the status of capture effects.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureBuffer.GetEffect"/> </td><td>The GetObjectInPath method retrieves an interface to an effect object associated with the buffer.	
    /// </td></tr> </table>Initialization<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundCaptureBuffer8::Initialize </td><td>The Initialize method initializes a capture buffer object. Because the IDirectSoundCapture8::CreateCaptureBufferIDirectSoundCapture8::CreateCaptureBuffer	
    /// </td></tr> </table>Information<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundCaptureBuffer8::GetCaps </td><td>The GetCaps method retrieves the capabilities of the buffer.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::GetCurrentPosition </td><td>Address of a variable that receives the offset from the start of the buffer, in bytes, of the capture cursor. The parameter can be <c>null</c> if this value is not wanted.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::GetFormat </td><td>The GetFormat method retrieves the waveform format of the capture buffer.	
    /// </td></tr> <tr><td>IDirectSoundCaptureBuffer8::GetStatus </td><td>The GetStatus method retrieves the status of the capture buffer.	
    /// </td></tr> </table><p>The LPDIRECTSOUNDCaptureBuffer8 type is defined as a reference to the <see cref="SharpDX.DirectSound.CaptureBuffer"/> interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.CaptureBuffer"/> *LPDIRECTSOUNDCaptureBuffer8;	
    /// </pre>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer']/*"/>	
    /// <msdn-id>ee418162</msdn-id>	
    /// <unmanaged>IDirectSoundCaptureBuffer</unmanaged>	
    /// <unmanaged-short>IDirectSoundCaptureBuffer</unmanaged-short>	
    [Guid("b0210782-89cd-11d0-af08-00a0c925cd16")]
    public partial class CaptureBufferBase : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.CaptureBufferBase"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public CaptureBufferBase(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.CaptureBufferBase"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.CaptureBufferBase(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.CaptureBufferBase(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetCaps method retrieves the capabilities of the buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::GetCaps']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getcaps</msdn-id>	
        /// <unmanaged>GetCaps</unmanaged>	
        /// <unmanaged-short>GetCaps</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetCaps([Out] DSCBCAPS* pDSCBCaps)</unmanaged>
        public SharpDX.DirectSound.CaptureBufferCapabilities Capabilities {
                get { SharpDX.DirectSound.CaptureBufferCapabilities __output__; GetCapabilities(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// The GetStatus method retrieves the status of the capture buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::GetStatus']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getstatus</msdn-id>	
        /// <unmanaged>GetStatus</unmanaged>	
        /// <unmanaged-short>GetStatus</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetStatus([Out] DSCBSTATUS_FLAGS* pdwStatus)</unmanaged>
        internal SharpDX.DirectSound.CaptureBufferStatusFlags CaptureStatus {
                get { SharpDX.DirectSound.CaptureBufferStatusFlags __output__; GetCaptureStatus(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// The GetCaps method retrieves the capabilities of the buffer.	
        /// </summary>	
        /// <param name="dSCBCapsRef"><dd> Pointer to a <see cref="SharpDX.DirectSound.CaptureBufferCapabilities"/> structure that receives information about the capture buffer. On input, the dwSize member must specify the size of the structure in bytes. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::GetCaps']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getcaps</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetCaps([Out] DSCBCAPS* pDSCBCaps)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer::GetCaps</unmanaged-short>	
        internal void GetCapabilities(out SharpDX.DirectSound.CaptureBufferCapabilities dSCBCapsRef) {
            unsafe {
                var dSCBCapsRef_ = SharpDX.DirectSound.CaptureBufferCapabilities.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &dSCBCapsRef_,((void**)(*(void**)_nativePointer))[3]);		
                dSCBCapsRef = new SharpDX.DirectSound.CaptureBufferCapabilities();
                dSCBCapsRef.__MarshalFrom(ref dSCBCapsRef_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetCurrentPosition method retrieves the positions of the capture and read cursors in the buffer.<p>The capture cursor is ahead of the read cursor. The data after the read position up to and including the capture position is not necessarily valid data.</p>	
        /// </summary>	
        /// <param name="apturePositionRef"><dd> Address of a variable that receives the offset from the start of the buffer, in bytes, of the capture cursor. The parameter can be <c>null</c> if this value is not wanted.  </dd></param>	
        /// <param name="eadPositionRef"><dd> Address of a variable that receives the offset from the start of the buffer, in bytes, of the read cursor. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_NODRIVER </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::GetCurrentPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getcurrentposition</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetCurrentPosition([Out, Optional] unsigned int* pdwCapturePosition,[Out, Optional] unsigned int* pdwReadPosition)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer::GetCurrentPosition</unmanaged-short>	
        internal void GetCurrentPosition(out int apturePositionRef, out int eadPositionRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* apturePositionRef_ = &apturePositionRef)
                    fixed (void* eadPositionRef_ = &eadPositionRef)
                        __result__= 
        				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, apturePositionRef_, eadPositionRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetFormat method retrieves the waveform format of the capture buffer.	
        /// </summary>	
        /// <param name="wfxFormatRef"><dd> Address of a <see cref="SharpDX.Multimedia.WaveFormat"/> structure that receives a description of the sound data in the capture buffer. To retrieve the buffer size needed to contain the format description, specify <c>null</c>.; in this case, the DWORD pointed to by the pdwSizeWritten parameter receives the size of the structure needed to receive complete format information. </dd></param>	
        /// <param name="sizeAllocated"><dd> Size, in bytes, of the <see cref="SharpDX.Multimedia.WaveFormat"/> structure. DirectSoundCapture writes, at most, dwSizeAllocated bytes to the structure. </dd></param>	
        /// <param name="izeWrittenRef"><dd> Address of a variable that receives the number of bytes written to the <see cref="SharpDX.Multimedia.WaveFormat"/> structure; or, if pwfxFormat is <c>null</c>, the size of the <see cref="SharpDX.Multimedia.WaveFormat"/> structure that would be necessary to receive the information. This parameter can be <c>null</c> if the value is not wanted. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::GetFormat']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getformat</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetFormat([In] void* pwfxFormat,[In] unsigned int dwSizeAllocated,[Out, Optional] unsigned int* pdwSizeWritten)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer::GetFormat</unmanaged-short>	
        internal void GetFormat(System.IntPtr wfxFormatRef, int sizeAllocated, out int izeWrittenRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* izeWrittenRef_ = &izeWrittenRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, (void*)wfxFormatRef, sizeAllocated, izeWrittenRef_,((void**)(*(void**)_nativePointer))[5]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetStatus method retrieves the status of the capture buffer.	
        /// </summary>	
        /// <param name="tatusRef"><dd> Address of a variable that receives the status of the capture buffer. The status can be set to one or more of the following:<table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureBufferStatusFlags.Capturing"/></td><td>The buffer is capturing audio data.</td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureBufferStatusFlags.Looping"/></td><td>The buffer is looping.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::GetStatus']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.getstatus</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::GetStatus([Out] DSCBSTATUS_FLAGS* pdwStatus)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer::GetStatus</unmanaged-short>	
        internal void GetCaptureStatus(out SharpDX.DirectSound.CaptureBufferStatusFlags tatusRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* tatusRef_ = &tatusRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, tatusRef_,((void**)(*(void**)_nativePointer))[6]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Lock method locks a portion of the buffer. Locking the buffer returns references into the buffer, allowing the application to read or write audio data into memory.	
        /// </summary>	
        /// <param name="offset"><dd> Offset, in bytes, from the start of the buffer to the point where the lock begins. </dd></param>	
        /// <param name="bytes"><dd> Size, in bytes, of the portion of the buffer to lock. Because the buffer is conceptually circular, this number can exceed the number of bytes between dwOffset and the end of the buffer. </dd></param>	
        /// <param name="dioPtr1Out"><dd> Address of a variable that receives a reference to the first locked part of the buffer. </dd></param>	
        /// <param name="udioBytes1Ref"><dd> Address of a variable that receives the number of bytes in the block at ppvAudioPtr1. If this value is less than dwBytes, the lock has wrapped and ppvAudioPtr2 points to a second block of data at the beginning of the buffer. </dd></param>	
        /// <param name="dioPtr2Out"><dd> Address of a variable that receives a reference to the second locked part of the capture buffer. If <c>null</c> is returned, the ppvAudioPtr1 parameter points to the entire locked portion of the capture buffer. </dd></param>	
        /// <param name="udioBytes2Ref"><dd> Address of a variable that receives the number of bytes in the block at ppvAudioPtr2. If ppvAudioPtr2 is <c>null</c>, this value is zero. </dd></param>	
        /// <param name="flags"><dd> Flags modifying the lock event. This value can be zero or the following flag:<table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DSCBLOCK_ENTIREBUFFER</td><td>Ignore dwBytes and lock the entire capture buffer.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>This method accepts an offset and a byte count, and returns two read references and their associated sizes. If the locked portion does not extend to the end of the buffer and wrap to the beginning, the second reference, ppvAudioBytes2, receives <c>null</c>. If the lock does wrap, ppvAudioBytes2 points to the beginning of the buffer.</p> <p>If the application passes <c>null</c> for the ppvAudioPtr2 and pdwAudioBytes2 parameters, the lock extends no further than the end of the buffer and does not wrap.</p> <p>The application should read data from the references returned by this method and then immediately call Unlock. The sound buffer should not remain locked while it is running; if it does, the capture cursor will reach the locked bytes and audio problems may result.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::Lock']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.lock</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::Lock([In] unsigned int dwOffset,[In] unsigned int dwBytes,[Out] void** ppvAudioPtr1,[Out] unsigned int* pdwAudioBytes1,[Out] void** ppvAudioPtr2,[Out, Optional] unsigned int* pdwAudioBytes2,[In] unsigned int dwFlags)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer::Lock</unmanaged-short>	
        internal void Lock(int offset, int bytes, out System.IntPtr dioPtr1Out, out int udioBytes1Ref, out System.IntPtr dioPtr2Out, out int udioBytes2Ref, int flags) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* dioPtr1Out_ = &dioPtr1Out)
                    fixed (void* udioBytes1Ref_ = &udioBytes1Ref)
                        fixed (void* dioPtr2Out_ = &dioPtr2Out)
                            fixed (void* udioBytes2Ref_ = &udioBytes2Ref)
                                __result__= 
                				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, offset, bytes, dioPtr1Out_, udioBytes1Ref_, dioPtr2Out_, udioBytes2Ref_, flags,((void**)(*(void**)_nativePointer))[8]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Start method begins capturing data into the buffer. If the buffer is already capturing, the method has no effect.	
        /// </summary>	
        /// <param name="flags"><dd> Flags that specify the behavior of the buffer when capturing sound data. The following flag is defined:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DSCBSTART_LOOPING</td><td>After the end of the buffer is reached, capture restarts at the beginning and continues until explicitly stopped.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_NODRIVER </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>If the buffer is already capturing, a call to this method using a different value in dwFlags might not change the value returned by GetStatus.</p> <p>If the application is multithreaded, the thread that starts the buffer must continue to exist as long as the buffer is capturing. Buffers created on WDM drivers stop capturing when the thread is terminated.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::Start']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.start</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::Start([In] BOOL dwFlags)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer::Start</unmanaged-short>	
        public void Start(SharpDX.Mathematics.Interop.RawBool flags) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint8(_nativePointer, flags,((void**)(*(void**)_nativePointer))[9]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Stop method stops the buffer so that it is no longer capturing data. If the buffer is not capturing, the method has no effect.	
        /// </summary>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::Stop']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.stop</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::Stop()</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer::Stop</unmanaged-short>	
        public void Stop() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[10]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Unlock method unlocks the buffer.	
        /// </summary>	
        /// <param name="vAudioPtr1Ref"><dd> Address of the value retrieved in the ppvAudioPtr1 parameter of the Lock method. </dd></param>	
        /// <param name="audioBytes1"><dd> Number of bytes read from the pvAudioPtr1 parameter. See Remarks. </dd></param>	
        /// <param name="vAudioPtr2Ref"><dd> Address of the value retrieved in the ppvAudioPtr2 parameter of the IDirectSoundCaptureBuffer8::Lock method. </dd></param>	
        /// <param name="audioBytes2"><dd> Number of bytes read from the pvAudioPtr2 parameter. See Remarks. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>An application must pass both references, pvAudioPtr1 and pvAudioPtr2, returned by the IDirectSoundCaptureBuffer8::Lock method to ensure the correct pairing of IDirectSoundCaptureBuffer8::Lock and IDirectSoundCaptureBuffer8::Unlock. The second reference is needed even if zero bytes were written to the second reference.</p> <p>The values in dwAudioBytes1 and dwAudioBytes2 must specify the number of bytes actually read from each part of the buffer, which might be less than the size of the lock. DirectSound uses these values to determine how much data to transfer from the device.</p> <p>Make sure that the capture buffer does not remain locked for long periods of time.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureBuffer::Unlock']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturebuffer8.idirectsoundcapturebuffer8.unlock</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureBuffer::Unlock([In, Buffer] void* pvAudioPtr1,[In] unsigned int dwAudioBytes1,[In, Buffer, Optional] void* pvAudioPtr2,[In] unsigned int dwAudioBytes2)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureBuffer::Unlock</unmanaged-short>	
        internal void Unlock(System.IntPtr vAudioPtr1Ref, int audioBytes1, System.IntPtr vAudioPtr2Ref, int audioBytes2) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, (void*)vAudioPtr1Ref, audioBytes1, (void*)vAudioPtr2Ref, audioBytes2,((void**)(*(void**)_nativePointer))[11]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundFXChorus8 interface is used to set and retrieve effect parameters on a buffer that supports chorus.</p><p>This interface is obtained by calling GetObjectInPath on the buffer that supports the effect.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundFXChorus8 interface exposes the following methods.</p>IDirectSoundFXChorus8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundFXChorus8::GetAllParameters </td><td>The GetAllParameters method retrieves the chorus parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundFXChorus8::SetAllParameters </td><td>The SetAllParameters method sets the chorus parameters of a buffer.	
    /// </td></tr> </table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXChorus']/*"/>	
    /// <msdn-id>ee418208</msdn-id>	
    /// <unmanaged>IDirectSoundFXChorus</unmanaged>	
    /// <unmanaged-short>IDirectSoundFXChorus</unmanaged-short>	
    [Guid("880842e3-145f-43e6-a934-a71806e50547")]
    public partial class Chorus : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.Chorus"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public Chorus(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.Chorus"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.Chorus(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.Chorus(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the chorus parameters of a buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXChorus::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxchorus8.idirectsoundfxchorus8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXChorus::GetAllParameters([Out] DSFXChorus* pDsFxChorus)</unmanaged>
        public SharpDX.DirectSound.ChorusSettings AllParameters {
                get { SharpDX.DirectSound.ChorusSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(ref value); }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the chorus parameters of a buffer.	
        /// </summary>	
        /// <param name="cDsFxChorusRef"><dd> Address of a <see cref="SharpDX.DirectSound.ChorusSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXChorus::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxchorus8.idirectsoundfxchorus8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXChorus::SetAllParameters([In] const DSFXChorus* pcDsFxChorus)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXChorus::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(ref SharpDX.DirectSound.ChorusSettings cDsFxChorusRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* cDsFxChorusRef_ = &cDsFxChorusRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, cDsFxChorusRef_,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the chorus parameters of a buffer.	
        /// </summary>	
        /// <param name="dsFxChorusRef"><dd> Address of a <see cref="SharpDX.DirectSound.ChorusSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXChorus::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxchorus8.idirectsoundfxchorus8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXChorus::GetAllParameters([Out] DSFXChorus* pDsFxChorus)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXChorus::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.ChorusSettings dsFxChorusRef) {
            unsafe {
                dsFxChorusRef = new SharpDX.DirectSound.ChorusSettings();
                SharpDX.Result __result__;
                fixed (void* dsFxChorusRef_ = &dsFxChorusRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dsFxChorusRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundFXCompressor8 interface is used to set and retrieve effect parameters on a buffer that supports compression.</p><p>This interface is obtained by calling GetObjectInPath on the buffer that supports the effect.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundFXCompressor8 interface exposes the following methods.</p>IDirectSoundFXCompressor8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundFXCompressor8::GetAllParameters </td><td>The GetAllParameters method retrieves the compression parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundFXCompressor8::SetAllParameters </td><td>The SetAllParameters method sets the compression parameters of a buffer.	
    /// </td></tr> </table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXCompressor']/*"/>	
    /// <msdn-id>ee418215</msdn-id>	
    /// <unmanaged>IDirectSoundFXCompressor</unmanaged>	
    /// <unmanaged-short>IDirectSoundFXCompressor</unmanaged-short>	
    [Guid("4bbd1154-62f6-4e2c-a15c-d3b6c417f7a0")]
    public partial class Compressor : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.Compressor"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public Compressor(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.Compressor"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.Compressor(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.Compressor(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the compression parameters of a buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXCompressor::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxcompressor8.idirectsoundfxcompressor8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXCompressor::GetAllParameters([Out] DSFXCompressor* pDsFxCompressor)</unmanaged>
        public SharpDX.DirectSound.CompressorSettings AllParameters {
                get { SharpDX.DirectSound.CompressorSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(ref value); }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the compression parameters of a buffer.	
        /// </summary>	
        /// <param name="cDsFxCompressorRef"><dd> Address of a <see cref="SharpDX.DirectSound.CompressorSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXCompressor::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxcompressor8.idirectsoundfxcompressor8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXCompressor::SetAllParameters([In] const DSFXCompressor* pcDsFxCompressor)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXCompressor::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(ref SharpDX.DirectSound.CompressorSettings cDsFxCompressorRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* cDsFxCompressorRef_ = &cDsFxCompressorRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, cDsFxCompressorRef_,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the compression parameters of a buffer.	
        /// </summary>	
        /// <param name="dsFxCompressorRef"><dd> Address of a <see cref="SharpDX.DirectSound.CompressorSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXCompressor::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxcompressor8.idirectsoundfxcompressor8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXCompressor::GetAllParameters([Out] DSFXCompressor* pDsFxCompressor)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXCompressor::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.CompressorSettings dsFxCompressorRef) {
            unsafe {
                dsFxCompressorRef = new SharpDX.DirectSound.CompressorSettings();
                SharpDX.Result __result__;
                fixed (void* dsFxCompressorRef_ = &dsFxCompressorRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dsFxCompressorRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The <see cref="SharpDX.DirectSound.DirectSound"/> interface is used to create buffer objects, manage devices, and set up the environment. This interface supersedes <see cref="SharpDX.DirectSound.DirectSoundBase"/> and adds new methods.</p><p>Obtain this interface by using the DirectSoundCreate8 or DirectSoundFullDuplexCreate8 function, or by using CoCreateInstance or CoCreateInstanceEx to create an object of class CLSID_DirectSound8.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the <see cref="SharpDX.DirectSound.DirectSound"/> interface exposes the following methods.</p>IDirectSound8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound8::Compact </td><td>The Compact method has no effect.	
    /// </td></tr> <tr><td>IDirectSound8::CreateSoundBuffer </td><td>The CreateSoundBuffer method creates a sound buffer object to manage audio samples.	
    /// </td></tr> <tr><td>IDirectSound8::DuplicateSoundBuffer </td><td>The DuplicateSoundBuffer method creates a new secondary buffer that shares the original buffer's memory.	
    /// </td></tr> <tr><td>IDirectSound8::GetCaps </td><td>The GetCaps method retrieves the capabilities of the hardware device that is represented by the device object.	
    /// </td></tr> <tr><td>IDirectSound8::GetSpeakerConfig </td><td>The GetSpeakerConfig method retrieves the speaker configuration.	
    /// </td></tr> <tr><td>IDirectSound8::Initialize </td><td>The Initialize method initializes a device object that was created by using the CoCreateInstance function.	
    /// </td></tr> <tr><td>IDirectSound8::SetCooperativeLevel </td><td>The SetCooperativeLevel method sets the cooperative level of the application for this sound device.	
    /// </td></tr> <tr><td>IDirectSound8::SetSpeakerConfig </td><td>The SetSpeakerConfig method specifies the speaker configuration of the device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.DirectSound.VerifyCertification"/> </td><td>The VerifyCertification method ascertains whether the device driver is certified for DirectX.	
    /// </td></tr> </table><p>The LPDIRECTSOUND8 type is defined as a reference to the <see cref="SharpDX.DirectSound.DirectSound"/> interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.DirectSound"/>  *LPDIRECTSOUND8;	
    /// </pre>	
    /// </summary>	
    /// <remarks>	
    /// <p>Only objects of class CLSID_DirectSound8 support this interface. All device objects created by DirectSoundCreate8 and DirectSoundFullDuplexCreate8 fall into this category. Objects of class CLSID_DirectSound, which include all those created by using the earlier DirectSoundCreate function, support only the earlier <see cref="SharpDX.DirectSound.DirectSoundBase"/> interface.</p> <p>The behavior of CLSID_DirectSound8 objects is somewhat different from that of CLSID_DirectSound objects. These differences are found in the <see cref="SharpDX.DirectSound.DirectSoundBase"/> interface as well as the <see cref="SharpDX.DirectSound.DirectSound"/> interface. Specific differences in the behavior of the newer object include the following:</p> <ul> <li><p>In calls to <see cref="SharpDX.DirectSound.DirectSoundBase.CreateSoundBuffer"/> and CreateSoundBuffer, <see cref="SharpDX.DirectSound.BufferFlags.Control3D"/> cannot be set on a buffer with a non-mono format, and <see cref="SharpDX.DirectSound.BufferFlags.Control3D"/> cannot be combined with <see cref="SharpDX.DirectSound.BufferFlags.ControlPan"/>.</p></li> <li><p>New buffer creation flags are supported.</p></li> <li><p>Buffers are not filled with silence on creation.</p></li> <li><p>The <see cref="SharpDX.DirectSound.SoundBuffer"/> interface returned by CreateSoundBuffer can be queried for the <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface.</p></li> <li><p>WAV formats in the <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure that have the <see cref="SharpDX.Multimedia.WaveFormatEncoding.Extensible"/> format tag are checked more strictly for validity.</p></li> </ul>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound8']/*"/>	
    /// <msdn-id>ee418035</msdn-id>	
    /// <unmanaged>IDirectSound8</unmanaged>	
    /// <unmanaged-short>IDirectSound8</unmanaged-short>	
    [Guid("c50a7e93-f395-4834-9ef6-7fa99de50966")]
    public partial class DirectSound : SharpDX.DirectSound.DirectSoundBase {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.DirectSound"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public DirectSound(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.DirectSound"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.DirectSound(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.DirectSound(nativePointer);
		}
        
        
        /// <summary>	
        /// The VerifyCertification method ascertains whether the device driver is certified for DirectX.	
        /// </summary>	
        /// <param name="ertifiedRef"><dd> Address of a DWORD variable that receives one of the values shown in the following table.<table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS_CERTIFIED</td><td>Driver is certified for DirectSound.</td></tr> <tr><td>DS_UNCERTIFIED</td><td>Driver is not certified for DirectSound.</td></tr> </table> </dd></param>	
        /// <returns><p>If the function succeeds, the return value is DS_OK.</p> <p>If the function fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>This method may attempt to retrieve certification information from the Internet.</p> <p>On emulated devices, the method returns DSERR_UNSUPPORTED. Emulated devices are identified by the <see cref="SharpDX.DirectSound.CapabilitiesFlags.EmulatedDriver"/> flag in the dwFlags member of <see cref="SharpDX.DirectSound.Capabilities"/>.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound8::VerifyCertification']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.verifycertification</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound8::VerifyCertification([Out] unsigned int* pdwCertified)</unmanaged>	
        /// <unmanaged-short>IDirectSound8::VerifyCertification</unmanaged-short>	
        internal void VerifyCertification(out int ertifiedRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* ertifiedRef_ = &ertifiedRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, ertifiedRef_,((void**)(*(void**)_nativePointer))[11]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The <see cref="SharpDX.DirectSound.DirectSound"/> interface is used to create buffer objects, manage devices, and set up the environment. This interface supersedes <see cref="SharpDX.DirectSound.DirectSoundBase"/> and adds new methods.</p><p>Obtain this interface by using the DirectSoundCreate8 or DirectSoundFullDuplexCreate8 function, or by using CoCreateInstance or CoCreateInstanceEx to create an object of class CLSID_DirectSound8.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the <see cref="SharpDX.DirectSound.DirectSound"/> interface exposes the following methods.</p>IDirectSound8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound8::Compact </td><td>The Compact method has no effect.	
    /// </td></tr> <tr><td>IDirectSound8::CreateSoundBuffer </td><td>The CreateSoundBuffer method creates a sound buffer object to manage audio samples.	
    /// </td></tr> <tr><td>IDirectSound8::DuplicateSoundBuffer </td><td>The DuplicateSoundBuffer method creates a new secondary buffer that shares the original buffer's memory.	
    /// </td></tr> <tr><td>IDirectSound8::GetCaps </td><td>The GetCaps method retrieves the capabilities of the hardware device that is represented by the device object.	
    /// </td></tr> <tr><td>IDirectSound8::GetSpeakerConfig </td><td>The GetSpeakerConfig method retrieves the speaker configuration.	
    /// </td></tr> <tr><td>IDirectSound8::Initialize </td><td>The Initialize method initializes a device object that was created by using the CoCreateInstance function.	
    /// </td></tr> <tr><td>IDirectSound8::SetCooperativeLevel </td><td>The SetCooperativeLevel method sets the cooperative level of the application for this sound device.	
    /// </td></tr> <tr><td>IDirectSound8::SetSpeakerConfig </td><td>The SetSpeakerConfig method specifies the speaker configuration of the device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.DirectSound.VerifyCertification"/> </td><td>The VerifyCertification method ascertains whether the device driver is certified for DirectX.	
    /// </td></tr> </table><p>The LPDIRECTSOUND8 type is defined as a reference to the <see cref="SharpDX.DirectSound.DirectSound"/> interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.DirectSound"/>  *LPDIRECTSOUND8;	
    /// </pre>	
    /// </summary>	
    /// <remarks>	
    /// <p>Only objects of class CLSID_DirectSound8 support this interface. All device objects created by DirectSoundCreate8 and DirectSoundFullDuplexCreate8 fall into this category. Objects of class CLSID_DirectSound, which include all those created by using the earlier DirectSoundCreate function, support only the earlier <see cref="SharpDX.DirectSound.DirectSoundBase"/> interface.</p> <p>The behavior of CLSID_DirectSound8 objects is somewhat different from that of CLSID_DirectSound objects. These differences are found in the <see cref="SharpDX.DirectSound.DirectSoundBase"/> interface as well as the <see cref="SharpDX.DirectSound.DirectSound"/> interface. Specific differences in the behavior of the newer object include the following:</p> <ul> <li><p>In calls to <see cref="SharpDX.DirectSound.DirectSoundBase.CreateSoundBuffer"/> and CreateSoundBuffer, <see cref="SharpDX.DirectSound.BufferFlags.Control3D"/> cannot be set on a buffer with a non-mono format, and <see cref="SharpDX.DirectSound.BufferFlags.Control3D"/> cannot be combined with <see cref="SharpDX.DirectSound.BufferFlags.ControlPan"/>.</p></li> <li><p>New buffer creation flags are supported.</p></li> <li><p>Buffers are not filled with silence on creation.</p></li> <li><p>The <see cref="SharpDX.DirectSound.SoundBuffer"/> interface returned by CreateSoundBuffer can be queried for the <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface.</p></li> <li><p>WAV formats in the <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure that have the <see cref="SharpDX.Multimedia.WaveFormatEncoding.Extensible"/> format tag are checked more strictly for validity.</p></li> </ul>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound']/*"/>	
    /// <msdn-id>ee418035</msdn-id>	
    /// <unmanaged>IDirectSound</unmanaged>	
    /// <unmanaged-short>IDirectSound</unmanaged-short>	
    [Guid("279afa83-4981-11ce-a521-0020af0be560")]
    public partial class DirectSoundBase : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.DirectSoundBase"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public DirectSoundBase(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.DirectSoundBase"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.DirectSoundBase(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.DirectSoundBase(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetCaps method retrieves the capabilities of the hardware device that is represented by the device object.	
        /// </summary>	
        /// <remarks>	
        /// <p>Information retrieved in the <see cref="SharpDX.DirectSound.Capabilities"/> structure describes the maximum capabilities of the sound device and those currently available, such as the number of hardware mixing channels and the amount of on-board sound memory. You can use this information to fine-tune performance and optimize resource allocation.</p> <p>Because of resource-sharing requirements, the maximum capabilities in one area might be available only at the cost of another area.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound::GetCaps']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.getcaps</msdn-id>	
        /// <unmanaged>GetCaps</unmanaged>	
        /// <unmanaged-short>GetCaps</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSound::GetCaps([Out] DSCAPS* pDSCaps)</unmanaged>
        public SharpDX.DirectSound.Capabilities Capabilities {
                get { SharpDX.DirectSound.Capabilities __output__; GetCapabilities(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// The CreateSoundBuffer method creates a sound buffer object to manage audio samples.	
        /// </summary>	
        /// <param name="cDSBufferDescRef"><dd> Address of a <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure that describes the sound buffer to create. </dd></param>	
        /// <param name="dSBufferOut"><dd> Address of a variable that receives the <see cref="SharpDX.DirectSound.SoundBuffer"/> interface of the new buffer object. Use QueryInterface to obtain <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/>. <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> is not available for the primary buffer. </dd></param>	
        /// <param name="unkOuterRef"><dd> Address of the controlling object's <see cref="SharpDX.ComObject"/> interface for COM aggregation. Must be <c>null</c>. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK, or DS_NO_VIRTUALIZATION if a requested 3D algorithm was not available and stereo panning was substituted. See the description of the guid3DAlgorithm member of <see cref="SharpDX.DirectSound.SoundBufferDescription"/>. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_ALLOCATED </td></tr> <tr><td>DSERR_BADFORMAT </td></tr> <tr><td>DSERR_BUFFERTOOSMALL </td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_DS8_REQUIRED </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_NOAGGREGATION </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>DirectSound does not initialize the contents of the buffer, and the application cannot assume that it contains silence.</p> <p>If an attempt is made to create a buffer with the <see cref="SharpDX.DirectSound.BufferFlags.Hardware"/> flag on a system where hardware acceleration is not available, the method fails with either DSERR_CONTROLUNAVAIL or DSERR_INVALIDCALL, depending on the operating system.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound::CreateSoundBuffer']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.createsoundbuffer</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound::CreateSoundBuffer([In] const DSBUFFERDESC* pcDSBufferDesc,[Out] void** ppDSBuffer,[In] IUnknown* pUnkOuter)</unmanaged>	
        /// <unmanaged-short>IDirectSound::CreateSoundBuffer</unmanaged-short>	
        internal void CreateSoundBuffer(SharpDX.DirectSound.SoundBufferDescription cDSBufferDescRef, out System.IntPtr dSBufferOut, SharpDX.ComObject unkOuterRef) {
            unsafe {
                var cDSBufferDescRef_ = SharpDX.DirectSound.SoundBufferDescription.__NewNative();
                cDSBufferDescRef.__MarshalTo(ref cDSBufferDescRef_);
                SharpDX.Result __result__;
                fixed (void* dSBufferOut_ = &dSBufferOut)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &cDSBufferDescRef_, dSBufferOut_, (void*)((unkOuterRef == null)?IntPtr.Zero:unkOuterRef.NativePointer),((void**)(*(void**)_nativePointer))[3]);		
                cDSBufferDescRef.__MarshalFree(ref cDSBufferDescRef_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetCaps method retrieves the capabilities of the hardware device that is represented by the device object.	
        /// </summary>	
        /// <param name="dSCapsRef"><dd> Address of a <see cref="SharpDX.DirectSound.Capabilities"/> structure that receives the capabilities of this sound device. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>Information retrieved in the <see cref="SharpDX.DirectSound.Capabilities"/> structure describes the maximum capabilities of the sound device and those currently available, such as the number of hardware mixing channels and the amount of on-board sound memory. You can use this information to fine-tune performance and optimize resource allocation.</p> <p>Because of resource-sharing requirements, the maximum capabilities in one area might be available only at the cost of another area.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound::GetCaps']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.getcaps</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound::GetCaps([Out] DSCAPS* pDSCaps)</unmanaged>	
        /// <unmanaged-short>IDirectSound::GetCaps</unmanaged-short>	
        internal void GetCapabilities(out SharpDX.DirectSound.Capabilities dSCapsRef) {
            unsafe {
                var dSCapsRef_ = SharpDX.DirectSound.Capabilities.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &dSCapsRef_,((void**)(*(void**)_nativePointer))[4]);		
                dSCapsRef = new SharpDX.DirectSound.Capabilities();
                dSCapsRef.__MarshalFrom(ref dSCapsRef_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The DuplicateSoundBuffer method creates a new secondary buffer that shares the original buffer's memory.	
        /// </summary>	
        /// <param name="dSBufferOriginalRef"><dd> Address of the <see cref="SharpDX.DirectSound.SoundBuffer"/> or <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface of the buffer to duplicate. </dd></param>	
        /// <param name="dSBufferDuplicateOut"><dd> Address of a variable that receives the <see cref="SharpDX.DirectSound.SoundBuffer"/> interface reference for the new buffer. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_ALLOCATED </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>This method is not valid for buffers created with the <see cref="SharpDX.DirectSound.BufferFlags.ControlEffects"/> flag.</p> <p>Initially, the duplicate buffer will have the same parameters as the original buffer. However, the application can change the parameters of each buffer independently, and each can be played or stopped without affecting the other.</p> <p>The buffer memory is released when the last object referencing it is released.</p> <p>There is a known issue with volume levels of duplicated buffers. The duplicated buffer will play at full volume unless you change the volume to a different value than the original buffer's volume setting. If the volume stays the same (even if you explicitly set the same volume in the duplicated buffer with a IDirectSoundBuffer8::SetVolume call), the buffer will play at full volume regardless. To work around this problem, immediately set the volume of the duplicated buffer to something slightly different than what it was, even if you change it one millibel. The volume may then be immediately set back again to the original desired value.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound::DuplicateSoundBuffer']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.duplicatesoundbuffer</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound::DuplicateSoundBuffer([In] IDirectSoundBuffer* pDSBufferOriginal,[Out] void** ppDSBufferDuplicate)</unmanaged>	
        /// <unmanaged-short>IDirectSound::DuplicateSoundBuffer</unmanaged-short>	
        internal SharpDX.Result DuplicateSoundBuffer(SharpDX.DirectSound.SoundBuffer dSBufferOriginalRef, out System.IntPtr dSBufferDuplicateOut) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* dSBufferDuplicateOut_ = &dSBufferDuplicateOut)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, (void*)((dSBufferOriginalRef == null)?IntPtr.Zero:dSBufferOriginalRef.NativePointer), dSBufferDuplicateOut_,((void**)(*(void**)_nativePointer))[5]);		
                return __result__;
            }
        }
        
        /// <summary>	
        /// The SetCooperativeLevel method sets the cooperative level of the application for this sound device.	
        /// </summary>	
        /// <param name="hwnd"><dd> Handle to the application window. </dd></param>	
        /// <param name="level"><dd> Requested level. Specify one of the values shown in the following table. <table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref="SharpDX.DirectSound.CooperativeLevel.Exclusive"/></td><td>For DirectX 8.0 and later, has the same effect as <see cref="SharpDX.DirectSound.CooperativeLevel.Priority"/>. For previous versions, sets the application to the exclusive level. This means that when it has the input focus, the application will be the only one audible; sounds from applications with the <see cref="SharpDX.DirectSound.BufferFlags.GlobalFocus"/> flag set will be muted. With this level, it also has all the privileges of the <see cref="SharpDX.DirectSound.CooperativeLevel.Priority"/> level. DirectSound will restore the hardware format, as specified by the most recent call to the SetFormat method, after the application gains the input focus.</td></tr> <tr><td><see cref="SharpDX.DirectSound.CooperativeLevel.Normal"/></td><td>Sets the normal level. This level has the smoothest multitasking and resource-sharing behavior, but because it does not allow the primary buffer format to change, output is restricted to the default 8-bit format.</td></tr> <tr><td><see cref="SharpDX.DirectSound.CooperativeLevel.Priority"/></td><td>Sets the priority level. Applications with this cooperative level can call the SetFormat and Compact methods.</td></tr> <tr><td><see cref="SharpDX.DirectSound.CooperativeLevel.WritePrimary"/></td><td>Sets the write-primary level. The application has write access to the primary buffer. No secondary buffers can be played. This level cannot be set if the DirectSound driver is being emulated for the device; that is, if the GetCaps method returns the <see cref="SharpDX.DirectSound.CapabilitiesFlags.EmulatedDriver"/> flag in the <see cref="SharpDX.DirectSound.Capabilities"/> structure.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_ALLOCATED </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The application must set the cooperative level by calling this method before its buffers can be played. The recommended cooperative level is <see cref="SharpDX.DirectSound.CooperativeLevel.Priority"/>.</p> <p>Do not call this method if any buffers are locked.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound::SetCooperativeLevel']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.setcooperativelevel</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound::SetCooperativeLevel([In] HWND hwnd,[In] DSSCL_ENUM dwLevel)</unmanaged>	
        /// <unmanaged-short>IDirectSound::SetCooperativeLevel</unmanaged-short>	
        public void SetCooperativeLevel(System.IntPtr hwnd, SharpDX.DirectSound.CooperativeLevel level) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, (void*)hwnd, unchecked((int)level),((void**)(*(void**)_nativePointer))[6]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Compact method has no effect.	
        /// </summary>	
        /// <returns><p>The return value is DS_OK.</p></returns>	
        /// <remarks>	
        /// <p>This method was formerly used for compacting the on-board memory of ISA sound cards.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound::Compact']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.compact</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound::Compact()</unmanaged>	
        /// <unmanaged-short>IDirectSound::Compact</unmanaged-short>	
        public void Compact() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[7]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetSpeakerConfig method retrieves the speaker configuration.	
        /// </summary>	
        /// <param name="peakerConfigRef"><dd> Address of the speaker configuration (see remarks in IDirectSound8::SetSpeakerConfig). </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><th>Return code</th></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The value returned at pdwSpeakerConfig can be a packed DWORD containing both configuration and geometry information. Use the DSSPEAKER_CONFIG and DSSPEAKER_GEOMETRY macros to unpack the DWORD, as in the following example:</p> <pre> if (DSSPEAKER_CONFIG(dwSpeakerConfig) == <see cref="SharpDX.DirectSound.SpeakerConfiguration.Stereo"/>) { if (DSSPEAKER_GEOMETRY(dwSpeakerConfig) == <see cref="SharpDX.DirectSound.SpeakerGeometry.Wide"/>) { // Configuration is wide stereo. ...} } </pre> <p>To use #defines implemented in Windows Vista, set the DIRECTSOUND_VERSION to 0x1000 before including dsound.h.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound::GetSpeakerConfig']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.getspeakerconfig</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound::GetSpeakerConfig([Out] unsigned int* pdwSpeakerConfig)</unmanaged>	
        /// <unmanaged-short>IDirectSound::GetSpeakerConfig</unmanaged-short>	
        internal void GetSpeakerConfiguration(out int peakerConfigRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* peakerConfigRef_ = &peakerConfigRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, peakerConfigRef_,((void**)(*(void**)_nativePointer))[8]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The<strong>SetSpeakerConfig</strong>method specifies the speaker configuration of the device.	
        /// </summary>	
        /// <param name="speakerConfig"><dd> The speaker configuration. See the following remarks. </dd></param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound::SetSpeakerConfig']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound8.idirectsound8.setspeakerconfig</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound::SetSpeakerConfig([In] unsigned int dwSpeakerConfig)</unmanaged>	
        /// <unmanaged-short>IDirectSound::SetSpeakerConfig</unmanaged-short>	
        internal void SetSpeakerConfiguration(int speakerConfig) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, speakerConfig,((void**)(*(void**)_nativePointer))[9]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundCapture8 interface is used to create sound capture buffers.</p><p>The interface is obtained by using the DirectSoundCaptureCreate8 or DirectSoundFullDuplexCreate8 functions, or by using CoCreateInstance or CoCreateInstanceEx to create an object of class CLSID_DirectSoundCapture8.</p><p>IDirectSoundCapture8 is a define for <see cref="SharpDX.DirectSound.DirectSoundCapture"/>. The two interface names are interchangeable. However, objects supporting this interface can have different functionality, depending on their class. For more information, see DirectSoundCaptureCreate8 and IDirectSoundCapture8::CreateCaptureBuffer.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundCapture8 interface exposes the following methods.</p>IDirectSoundCapture8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundCapture8::CreateCaptureBuffer </td><td>The CreateCaptureBuffer method creates a buffer for capturing waveform audio.	
    /// </td></tr> <tr><td>IDirectSoundCapture8::GetCaps </td><td>The GetCaps method retrieves the capabilities of the capture device.	
    /// </td></tr> <tr><td>IDirectSoundCapture8::Initialize </td><td>The Initialize method initializes a capture device object created by using CoCreateInstance. Calling this method is not required when the DirectSoundCaptureCreate8 or DirectSoundFullDuplexCreate8 function is used to create the object.	
    /// </td></tr> </table><p>The LPDIRECTSOUNDCAPTURE type is defined as a reference to the <see cref="SharpDX.DirectSound.DirectSoundCapture"/> interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.DirectSoundCapture"/> *LPDIRECTSOUNDCAPTURE;	
    /// </pre>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCapture']/*"/>	
    /// <msdn-id>ee418154</msdn-id>	
    /// <unmanaged>IDirectSoundCapture</unmanaged>	
    /// <unmanaged-short>IDirectSoundCapture</unmanaged-short>	
    [Guid("b0210781-89cd-11d0-af08-00a0c925cd16")]
    public partial class DirectSoundCapture : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.DirectSoundCapture"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public DirectSoundCapture(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.DirectSoundCapture"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.DirectSoundCapture(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.DirectSoundCapture(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetCaps method retrieves the capabilities of the capture device.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCapture::GetCaps']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapture8.idirectsoundcapture8.getcaps</msdn-id>	
        /// <unmanaged>GetCaps</unmanaged>	
        /// <unmanaged-short>GetCaps</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundCapture::GetCaps([Out] DSCCAPS* pDSCCaps)</unmanaged>
        public SharpDX.DirectSound.CaptureCapabilities Capabilities {
                get { SharpDX.DirectSound.CaptureCapabilities __output__; GetCapabilities(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// The CreateCaptureBuffer method creates a buffer for capturing waveform audio.	
        /// </summary>	
        /// <param name="cDSCBufferDescRef"><dd> Pointer to a <see cref="SharpDX.DirectSound.CaptureBufferDescription"/> structure containing values for the capture buffer being created. </dd></param>	
        /// <param name="dSCBufferOut"><dd> Address of a variable that receives an <see cref="SharpDX.DirectSound.CaptureBufferBase"/> interface reference. Use QueryInterface to obtain <see cref="SharpDX.DirectSound.CaptureBuffer"/>. See Remarks. </dd></param>	
        /// <param name="unkOuterRef"><dd> Address of the controlling object's <see cref="SharpDX.ComObject"/> interface for COM aggregation. Must be <c>null</c>. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_BADFORMAT </td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_NODRIVER </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>On Microsoft Windows98 and Windows2000, each capture device supports a single buffer.</p> <p>The <see cref="SharpDX.DirectSound.CaptureBuffer"/> interface is supported only on buffers created by an object of class CLSID_DirectSoundCapture8. If the IDirectSoundCapture8 interface was obtained from DirectSoundCaptureCreate8, <see cref="SharpDX.DirectSound.CaptureBuffer"/> is supported. If IDirectSoundCapture8 was obtained from the earlier DirectSoundCaptureCreate function, only <see cref="SharpDX.DirectSound.CaptureBufferBase"/> is supported.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCapture::CreateCaptureBuffer']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapture8.idirectsoundcapture8.createcapturebuffer</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCapture::CreateCaptureBuffer([In] const DSCBUFFERDESC* pcDSCBufferDesc,[Out] IDirectSoundCaptureBuffer** ppDSCBuffer,[In] IUnknown* pUnkOuter)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCapture::CreateCaptureBuffer</unmanaged-short>	
        internal void CreateCaptureBuffer(SharpDX.DirectSound.CaptureBufferDescription cDSCBufferDescRef, out SharpDX.DirectSound.CaptureBufferBase dSCBufferOut, SharpDX.ComObject unkOuterRef) {
            unsafe {
                var cDSCBufferDescRef_ = SharpDX.DirectSound.CaptureBufferDescription.__NewNative();
                cDSCBufferDescRef.__MarshalTo(ref cDSCBufferDescRef_);
                IntPtr dSCBufferOut_ = IntPtr.Zero;
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &cDSCBufferDescRef_, &dSCBufferOut_, (void*)((unkOuterRef == null)?IntPtr.Zero:unkOuterRef.NativePointer),((void**)(*(void**)_nativePointer))[3]);		
                cDSCBufferDescRef.__MarshalFree(ref cDSCBufferDescRef_);
                dSCBufferOut= (dSCBufferOut_ == IntPtr.Zero)?null:new SharpDX.DirectSound.CaptureBufferBase(dSCBufferOut_);	
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetCaps method retrieves the capabilities of the capture device.	
        /// </summary>	
        /// <param name="dSCCapsRef"><dd> Pointer to a <see cref="SharpDX.DirectSound.CaptureCapabilities"/> structure to be receive information about the capture device. When the method is called, the dwSize member must specify the size of the structure in bytes. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> <tr><td>DSERR_NODRIVER </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> <tr><td>DSERR_UNINITIALIZED </td></tr> </table></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCapture::GetCaps']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapture8.idirectsoundcapture8.getcaps</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCapture::GetCaps([Out] DSCCAPS* pDSCCaps)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCapture::GetCaps</unmanaged-short>	
        internal void GetCapabilities(out SharpDX.DirectSound.CaptureCapabilities dSCCapsRef) {
            unsafe {
                var dSCCapsRef_ = SharpDX.DirectSound.CaptureCapabilities.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &dSCCapsRef_,((void**)(*(void**)_nativePointer))[4]);		
                dSCCapsRef = new SharpDX.DirectSound.CaptureCapabilities();
                dSCCapsRef.__MarshalFrom(ref dSCCapsRef_);
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundFXDistortion8 interface is used to set and retrieve effect parameters on a buffer that supports distortion.</p><p>This interface is obtained by calling GetObjectInPath on the buffer that supports the effect.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundFXDistortion8 interface exposes the following methods.</p>IDirectSoundFXDistortion8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundFXDistortion8::GetAllParameters </td><td>The GetAllParameters method retrieves the distortion parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundFXDistortion8::SetAllParameters </td><td>The SetAllParameters method sets the distortion parameters of a buffer.	
    /// </td></tr> </table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXDistortion']/*"/>	
    /// <msdn-id>ee418218</msdn-id>	
    /// <unmanaged>IDirectSoundFXDistortion</unmanaged>	
    /// <unmanaged-short>IDirectSoundFXDistortion</unmanaged-short>	
    [Guid("8ecf4326-455f-4d8b-bda9-8d5d3e9e3e0b")]
    public partial class Distortion : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.Distortion"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public Distortion(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.Distortion"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.Distortion(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.Distortion(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the distortion parameters of a buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXDistortion::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxdistortion8.idirectsoundfxdistortion8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXDistortion::GetAllParameters([Out] DSFXDistortion* pDsFxDistortion)</unmanaged>
        public SharpDX.DirectSound.DistortionSettings AllParameters {
                get { SharpDX.DirectSound.DistortionSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(ref value); }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the distortion parameters of a buffer.	
        /// </summary>	
        /// <param name="cDsFxDistortionRef"><dd> Address of a <see cref="SharpDX.DirectSound.DistortionSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK or S_FALSE. See the Remarks for <see cref="SharpDX.DirectSound.DistortionSettings"/>. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXDistortion::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxdistortion8.idirectsoundfxdistortion8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXDistortion::SetAllParameters([In] const DSFXDistortion* pcDsFxDistortion)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXDistortion::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(ref SharpDX.DirectSound.DistortionSettings cDsFxDistortionRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* cDsFxDistortionRef_ = &cDsFxDistortionRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, cDsFxDistortionRef_,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the distortion parameters of a buffer.	
        /// </summary>	
        /// <param name="dsFxDistortionRef"><dd> Address of a <see cref="SharpDX.DirectSound.DistortionSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXDistortion::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxdistortion8.idirectsoundfxdistortion8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXDistortion::GetAllParameters([Out] DSFXDistortion* pDsFxDistortion)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXDistortion::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.DistortionSettings dsFxDistortionRef) {
            unsafe {
                dsFxDistortionRef = new SharpDX.DirectSound.DistortionSettings();
                SharpDX.Result __result__;
                fixed (void* dsFxDistortionRef_ = &dsFxDistortionRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dsFxDistortionRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundFXEcho8 interface is used to set and retrieve effect parameters on a buffer that supports echo.</p><p>This interface is obtained by calling GetObjectInPath on the buffer that supports the effect.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundFXEcho8 interface exposes the following methods.</p>IDirectSoundFXEcho8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundFXEcho8::GetAllParameters </td><td>The GetAllParameters method retrieves the echo parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundFXEcho8::SetAllParameters </td><td>The SetAllParameters method sets the echo parameters of a buffer.	
    /// </td></tr> </table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXEcho']/*"/>	
    /// <msdn-id>ee418221</msdn-id>	
    /// <unmanaged>IDirectSoundFXEcho</unmanaged>	
    /// <unmanaged-short>IDirectSoundFXEcho</unmanaged-short>	
    [Guid("8bd28edf-50db-4e92-a2bd-445488d1ed42")]
    public partial class Echo : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.Echo"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public Echo(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.Echo"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.Echo(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.Echo(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the echo parameters of a buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXEcho::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxecho8.idirectsoundfxecho8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXEcho::GetAllParameters([Out] DSFXEcho* pDsFxEcho)</unmanaged>
        public SharpDX.DirectSound.EchoSettings AllParameters {
                get { SharpDX.DirectSound.EchoSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(ref value); }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the echo parameters of a buffer.	
        /// </summary>	
        /// <param name="cDsFxEchoRef"><dd> Address of a <see cref="SharpDX.DirectSound.EchoSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXEcho::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxecho8.idirectsoundfxecho8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXEcho::SetAllParameters([In] const DSFXEcho* pcDsFxEcho)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXEcho::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(ref SharpDX.DirectSound.EchoSettings cDsFxEchoRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* cDsFxEchoRef_ = &cDsFxEchoRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, cDsFxEchoRef_,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the echo parameters of a buffer.	
        /// </summary>	
        /// <param name="dsFxEchoRef"><dd> Address of a <see cref="SharpDX.DirectSound.EchoSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXEcho::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxecho8.idirectsoundfxecho8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXEcho::GetAllParameters([Out] DSFXEcho* pDsFxEcho)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXEcho::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.EchoSettings dsFxEchoRef) {
            unsafe {
                dsFxEchoRef = new SharpDX.DirectSound.EchoSettings();
                SharpDX.Result __result__;
                fixed (void* dsFxEchoRef_ = &dsFxEchoRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dsFxEchoRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundFXFlanger8 interface is used to set and retrieve effect parameters on a buffer that supports flange.</p><p>This interface is obtained by calling GetObjectInPath on the buffer that supports the effect.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundFXFlanger8 interface exposes the following methods.</p>IDirectSoundFXFlanger8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundFXFlanger8::GetAllParameters </td><td>The GetAllParameters method retrieves the flange parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundFXFlanger8::SetAllParameters </td><td>The SetAllParameters method sets the flange parameters of a buffer.	
    /// </td></tr> </table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXFlanger']/*"/>	
    /// <msdn-id>ee418225</msdn-id>	
    /// <unmanaged>IDirectSoundFXFlanger</unmanaged>	
    /// <unmanaged-short>IDirectSoundFXFlanger</unmanaged-short>	
    [Guid("903e9878-2c92-4072-9b2c-ea68f5396783")]
    public partial class Flanger : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.Flanger"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public Flanger(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.Flanger"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.Flanger(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.Flanger(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the flange parameters of a buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXFlanger::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxflanger8.idirectsoundfxflanger8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXFlanger::GetAllParameters([Out] DSFXFlanger* pDsFxFlanger)</unmanaged>
        public SharpDX.DirectSound.FlangerSettings AllParameters {
                get { SharpDX.DirectSound.FlangerSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(ref value); }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the flange parameters of a buffer.	
        /// </summary>	
        /// <param name="cDsFxFlangerRef"><dd> Address of a <see cref="SharpDX.DirectSound.FlangerSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXFlanger::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxflanger8.idirectsoundfxflanger8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXFlanger::SetAllParameters([In] const DSFXFlanger* pcDsFxFlanger)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXFlanger::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(ref SharpDX.DirectSound.FlangerSettings cDsFxFlangerRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* cDsFxFlangerRef_ = &cDsFxFlangerRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, cDsFxFlangerRef_,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the flange parameters of a buffer.	
        /// </summary>	
        /// <param name="dsFxFlangerRef"><dd> Address of a <see cref="SharpDX.DirectSound.FlangerSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXFlanger::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxflanger8.idirectsoundfxflanger8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXFlanger::GetAllParameters([Out] DSFXFlanger* pDsFxFlanger)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXFlanger::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.FlangerSettings dsFxFlangerRef) {
            unsafe {
                dsFxFlangerRef = new SharpDX.DirectSound.FlangerSettings();
                SharpDX.Result __result__;
                fixed (void* dsFxFlangerRef_ = &dsFxFlangerRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dsFxFlangerRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundFullDuplex8 interface represents a full-duplex stream.</p><p>The interface is obtained by using the DirectSoundFullDuplexCreate8 function. This function initializes DirectSound capture and playback.</p><p>The interface can also be obtained by using CoCreateInstance or CoCreateInstanceEx to create an object of class CLSID_DirectSoundFullDuplex8.</p><p>IDirectSoundFullDuplex8 is a define for <see cref="SharpDX.DirectSound.FullDuplex"/>. The interface names are interchangeable.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundFullDuplex8 interface exposes the following method.</p>IDirectSoundFullDuplex8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundFullDuplex8::Initialize </td><td>The Initialize method initializes a full duplex object that was created by using CoCreateInstance.	
    /// </td></tr> </table><p>The LPDIRECTSOUNDFULLDUPLEX type is defined as a reference to <see cref="SharpDX.DirectSound.FullDuplex"/>.</p><pre> typedef struct <see cref="SharpDX.DirectSound.FullDuplex"/> *LPDIRECTSOUNDFULLDUPLEX;	
    /// </pre>Info<p>Operating System: Requires Microsoft Windows XP or later.</p> <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFullDuplex']/*"/>	
    /// <msdn-id>ee418204</msdn-id>	
    /// <unmanaged>IDirectSoundFullDuplex</unmanaged>	
    /// <unmanaged-short>IDirectSoundFullDuplex</unmanaged-short>	
    [Guid("edcb4c7a-daab-4216-a42e-6c50596ddc1d")]
    public partial class FullDuplex : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.FullDuplex"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public FullDuplex(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.FullDuplex"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.FullDuplex(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.FullDuplex(nativePointer);
		}
        
    }
    /// <summary>	
    /// <p>The IDirectSoundFXGargle8 interface is used to set and retrieve effect parameters on a buffer that supports amplitude modulation.</p><p>This interface is obtained by calling GetObjectInPath on the buffer that supports the effect.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundFXGargle8 interface exposes the following methods.</p>IDirectSoundFXGargle8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundFXGargle8::GetAllParameters </td><td>The GetAllParameters method retrieves the amplitude modulation parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundFXGargle8::SetAllParameters </td><td>The SetAllParameters method sets the amplitude modulation parameters of a buffer.	
    /// </td></tr> </table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXGargle']/*"/>	
    /// <msdn-id>ee418228</msdn-id>	
    /// <unmanaged>IDirectSoundFXGargle</unmanaged>	
    /// <unmanaged-short>IDirectSoundFXGargle</unmanaged-short>	
    [Guid("d616f352-d622-11ce-aac5-0020af0b99a3")]
    public partial class Gargle : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.Gargle"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public Gargle(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.Gargle"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.Gargle(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.Gargle(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the amplitude modulation parameters of a buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXGargle::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxgargle8.idirectsoundfxgargle8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXGargle::GetAllParameters([Out] DSFXGargle* pDsFxGargle)</unmanaged>
        public SharpDX.DirectSound.GargleSettings AllParameters {
                get { SharpDX.DirectSound.GargleSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(value); }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the amplitude modulation parameters of a buffer.	
        /// </summary>	
        /// <param name="cDsFxGargleRef"><dd> Address of a <see cref="SharpDX.DirectSound.GargleSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value can be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXGargle::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxgargle8.idirectsoundfxgargle8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXGargle::SetAllParameters([In] const DSFXGargle* pcDsFxGargle)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXGargle::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(SharpDX.DirectSound.GargleSettings cDsFxGargleRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &cDsFxGargleRef,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the amplitude modulation parameters of a buffer.	
        /// </summary>	
        /// <param name="dsFxGargleRef"><dd> Address of a <see cref="SharpDX.DirectSound.GargleSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value can be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXGargle::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxgargle8.idirectsoundfxgargle8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXGargle::GetAllParameters([Out] DSFXGargle* pDsFxGargle)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXGargle::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.GargleSettings dsFxGargleRef) {
            unsafe {
                dsFxGargleRef = new SharpDX.DirectSound.GargleSettings();
                SharpDX.Result __result__;
                fixed (void* dsFxGargleRef_ = &dsFxGargleRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dsFxGargleRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb']/*"/>	
    /// <msdn-id>bb280379</msdn-id>	
    /// <unmanaged>IDirectSoundFXI3DL2Reverb</unmanaged>	
    /// <unmanaged-short>IDirectSoundFXI3DL2Reverb</unmanaged-short>	
    [Guid("4b166a6a-0d66-43f3-80e3-ee6280dee1a4")]
    public partial class I3DL2Reverb : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.I3DL2Reverb"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public I3DL2Reverb(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.I3DL2Reverb"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.I3DL2Reverb(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.I3DL2Reverb(nativePointer);
		}
        
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetAllParameters']/*"/>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetAllParameters([Out] DSFXI3DL2Reverb* pDsFxI3DL2Reverb)</unmanaged>
        public SharpDX.DirectSound.I3DL2ReverbSettings AllParameters {
                get { SharpDX.DirectSound.I3DL2ReverbSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(ref value); }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetPreset']/*"/>	
        /// <unmanaged>GetPreset / SetPreset</unmanaged>	
        /// <unmanaged-short>GetPreset</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetPreset([Out] unsigned int* pdwPreset)</unmanaged>
        public int Preset {
                get { int __output__; GetPreset(out __output__); return __output__; }
                set { SetPreset(value); }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetQuality']/*"/>	
        /// <unmanaged>GetQuality / SetQuality</unmanaged>	
        /// <unmanaged-short>GetQuality</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetQuality([Out] int* plQuality)</unmanaged>
        public int Quality {
                get { int __output__; GetQuality(out __output__); return __output__; }
                set { SetQuality(value); }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="cDsFxI3DL2ReverbRef">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb::SetAllParameters']/*"/>	
        /// <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::SetAllParameters([In] const DSFXI3DL2Reverb* pcDsFxI3DL2Reverb)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXI3DL2Reverb::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(ref SharpDX.DirectSound.I3DL2ReverbSettings cDsFxI3DL2ReverbRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* cDsFxI3DL2ReverbRef_ = &cDsFxI3DL2ReverbRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, cDsFxI3DL2ReverbRef_,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="dsFxI3DL2ReverbRef">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetAllParameters']/*"/>	
        /// <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetAllParameters([Out] DSFXI3DL2Reverb* pDsFxI3DL2Reverb)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXI3DL2Reverb::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.I3DL2ReverbSettings dsFxI3DL2ReverbRef) {
            unsafe {
                dsFxI3DL2ReverbRef = new SharpDX.DirectSound.I3DL2ReverbSettings();
                SharpDX.Result __result__;
                fixed (void* dsFxI3DL2ReverbRef_ = &dsFxI3DL2ReverbRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dsFxI3DL2ReverbRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="preset">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb::SetPreset']/*"/>	
        /// <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::SetPreset([In] unsigned int dwPreset)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXI3DL2Reverb::SetPreset</unmanaged-short>	
        internal void SetPreset(int preset) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, preset,((void**)(*(void**)_nativePointer))[5]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="resetRef">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetPreset']/*"/>	
        /// <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetPreset([Out] unsigned int* pdwPreset)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXI3DL2Reverb::GetPreset</unmanaged-short>	
        internal void GetPreset(out int resetRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* resetRef_ = &resetRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, resetRef_,((void**)(*(void**)_nativePointer))[6]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="quality">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb::SetQuality']/*"/>	
        /// <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::SetQuality([In] int lQuality)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXI3DL2Reverb::SetQuality</unmanaged-short>	
        internal void SetQuality(int quality) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, quality,((void**)(*(void**)_nativePointer))[7]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="lQualityRef">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXI3DL2Reverb::GetQuality']/*"/>	
        /// <unmanaged>HRESULT IDirectSoundFXI3DL2Reverb::GetQuality([Out] int* plQuality)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXI3DL2Reverb::GetQuality</unmanaged-short>	
        internal void GetQuality(out int lQualityRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* lQualityRef_ = &lQualityRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, lQualityRef_,((void**)(*(void**)_nativePointer))[8]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundCaptureFXNoiseSuppress8 interface is used to set and retrieve parameters on a capture buffer that supports noise suppression. This interface requires Microsoft WindowsXP or later.</p><p>IDirectSoundCaptureFXNoiseSuppress8 is a define for <see cref="SharpDX.DirectSound.NoiseSuppress"/>. The interface names are interchangeable.</p><p>This interface is obtained by calling GetObjectInPath on the buffer that supports the effect.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundCaptureFXNoiseSuppress8 interface exposes the following methods.</p>IDirectSoundCaptureFXNoiseSuppress8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundCaptureFXNoiseSuppress8::GetAllParameters </td><td>The IDirectSoundCaptureFXNoiseSuppress8::GetAllParameters method retrieves the noise suppression parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundCaptureFXNoiseSuppress8::Reset </td><td>The IDirectSoundCaptureFXNoiseSuppress8::Reset method resets the effect to its initial state.	
    /// </td></tr> <tr><td>IDirectSoundCaptureFXNoiseSuppress8::SetAllParameters </td><td>The IDirectSoundCaptureFXNoiseSuppress8::SetAllParameters method sets the noise suppression parameters of a buffer.	
    /// </td></tr> </table><p>The LPDIRECTSOUNDNOISESUPPRESS8 type is defined as a reference to the IDirectSoundNoiseSuppress8 interface:</p><pre> typedef struct IDirectSoundCaptureFXNoiseSuppress8  *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS8;	
    /// </pre>Info<p>Operating System: Requires Microsoft WindowsXP or later.</p> <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress']/*"/>	
    /// <msdn-id>ee418197</msdn-id>	
    /// <unmanaged>IDirectSoundCaptureFXNoiseSuppress</unmanaged>	
    /// <unmanaged-short>IDirectSoundCaptureFXNoiseSuppress</unmanaged-short>	
    [Guid("ed311e41-fbae-4175-9625-cd0854f693ca")]
    public partial class NoiseSuppress : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.NoiseSuppress"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public NoiseSuppress(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.NoiseSuppress"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.NoiseSuppress(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.NoiseSuppress(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the noise suppression parameters of a buffer.	
        /// </summary>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxnoisesuppress8.idirectsoundcapturefxnoisesuppress8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXNoiseSuppress::GetAllParameters([Out] DSCFXNoiseSuppress* pDscFxNoiseSuppress)</unmanaged>
        public SharpDX.DirectSound.NoiseSuppressSettings AllParameters {
                get { SharpDX.DirectSound.NoiseSuppressSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(value); }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the noise suppression parameters of a buffer.	
        /// </summary>	
        /// <param name="cDscFxNoiseSuppressRef"><dd> Address of a <see cref="SharpDX.DirectSound.NoiseSuppressSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxnoisesuppress8.idirectsoundcapturefxnoisesuppress8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXNoiseSuppress::SetAllParameters([In] const DSCFXNoiseSuppress* pcDscFxNoiseSuppress)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureFXNoiseSuppress::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(SharpDX.DirectSound.NoiseSuppressSettings cDscFxNoiseSuppressRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &cDscFxNoiseSuppressRef,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the noise suppression parameters of a buffer.	
        /// </summary>	
        /// <param name="dscFxNoiseSuppressRef"><dd> Address of a <see cref="SharpDX.DirectSound.NoiseSuppressSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxnoisesuppress8.idirectsoundcapturefxnoisesuppress8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXNoiseSuppress::GetAllParameters([Out] DSCFXNoiseSuppress* pDscFxNoiseSuppress)</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureFXNoiseSuppress::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.NoiseSuppressSettings dscFxNoiseSuppressRef) {
            unsafe {
                dscFxNoiseSuppressRef = new SharpDX.DirectSound.NoiseSuppressSettings();
                SharpDX.Result __result__;
                fixed (void* dscFxNoiseSuppressRef_ = &dscFxNoiseSuppressRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dscFxNoiseSuppressRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The IDirectSoundCaptureFXNoiseSuppress8::Reset method resets the effect to its initial state.	
        /// </summary>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_OUTOFMEMORY.</p></returns>	
        /// <remarks>	
        /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table> <p>Applications should not reset an effect except when necessary because it has entered an incorrect state. This might be done in response to user input. An effect must not be reset arbitrarily at startup, because another application might be using the same effect.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundCaptureFXNoiseSuppress::Reset']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundcapturefxnoisesuppress8.idirectsoundcapturefxnoisesuppress8.reset</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundCaptureFXNoiseSuppress::Reset()</unmanaged>	
        /// <unmanaged-short>IDirectSoundCaptureFXNoiseSuppress::Reset</unmanaged-short>	
        public void Reset() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[5]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundFXParamEq8 interface is used to set and retrieve effect parameters on a buffer that supports parametric equalizer effects.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundFXParamEq8 interface exposes the following methods.</p>IDirectSoundFXParamEq8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundFXParamEq8::GetAllParameters </td><td>The GetAllParameters method retrieves the parametric equalizer parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundFXParamEq8::SetAllParameters </td><td>The SetAllParameters method sets the parametric equalizer parameters of a buffer.	
    /// </td></tr> </table>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXParamEq']/*"/>	
    /// <msdn-id>ee418238</msdn-id>	
    /// <unmanaged>IDirectSoundFXParamEq</unmanaged>	
    /// <unmanaged-short>IDirectSoundFXParamEq</unmanaged-short>	
    [Guid("c03ca9fe-fe90-4204-8078-82334cd177da")]
    public partial class ParametricEqualizer : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.ParametricEqualizer"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public ParametricEqualizer(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.ParametricEqualizer"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.ParametricEqualizer(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.ParametricEqualizer(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the parametric equalizer parameters of a buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXParamEq::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxparameq8.idirectsoundfxparameq8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXParamEq::GetAllParameters([Out] DSFXParamEq* pDsFxParamEq)</unmanaged>
        public SharpDX.DirectSound.ParametricEqualizerSettings AllParameters {
                get { SharpDX.DirectSound.ParametricEqualizerSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(value); }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the parametric equalizer parameters of a buffer.	
        /// </summary>	
        /// <param name="cDsFxParamEqRef"><dd> Address of a <see cref="SharpDX.DirectSound.ParametricEqualizerSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK or S_FALSE. See the Remarks for <see cref="SharpDX.DirectSound.ParametricEqualizerSettings"/>. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXParamEq::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxparameq8.idirectsoundfxparameq8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXParamEq::SetAllParameters([In] const DSFXParamEq* pcDsFxParamEq)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXParamEq::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(SharpDX.DirectSound.ParametricEqualizerSettings cDsFxParamEqRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &cDsFxParamEqRef,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the parametric equalizer parameters of a buffer.	
        /// </summary>	
        /// <param name="dsFxParamEqRef"><dd> Address of a <see cref="SharpDX.DirectSound.ParametricEqualizerSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXParamEq::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxparameq8.idirectsoundfxparameq8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXParamEq::GetAllParameters([Out] DSFXParamEq* pDsFxParamEq)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXParamEq::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.ParametricEqualizerSettings dsFxParamEqRef) {
            unsafe {
                dsFxParamEqRef = new SharpDX.DirectSound.ParametricEqualizerSettings();
                SharpDX.Result __result__;
                fixed (void* dsFxParamEqRef_ = &dsFxParamEqRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dsFxParamEqRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface is used to manage sound buffers.</p><p>The <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface supersedes <see cref="SharpDX.DirectSound.SoundBuffer"/> and adds new methods.</p><p>To obtain the interface, use the CreateSoundBuffer method to retrieve <see cref="SharpDX.DirectSound.SoundBuffer"/>, and then pass IID_IDirectSoundBuffer8 to IDirectSoundBuffer::QueryInterface.</p><p>For the primary buffer, you must use the <see cref="SharpDX.DirectSound.SoundBuffer"/> interface; <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> is not available. <see cref="SharpDX.DirectSound.SoundBuffer"/> is not documented separately. For documentation, see the corresponding <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> methods.</p><p>Not all methods of <see cref="SharpDX.DirectSound.SoundBuffer"/> are valid for primary buffers. For example, SetCurrentPosition will fail. See the reference topics for individual methods.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface exposes the following methods, arranged by category.</p>Effects<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.SecondarySoundBuffer.GetEffect"/> </td><td>The GetObjectInPath method retrieves an interface for an effect object associated with the buffer.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SecondarySoundBuffer.SetEffect"/> </td><td>Number of elements in the pDSFXDesc and pdwResultCodes arrays. If this value is 0, pDSFXDesc and pdwResultCodes must both be <c>null</c>. Set to 0 to remove all effects from the buffer.	
    /// </td></tr> </table>Resource Management<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.SecondarySoundBuffer.AcquireResources"/> </td><td>The AcquireResources method allocates resources for a buffer that was created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag in the DSBUFFERDESCDSBUFFERDESC	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Restore </td><td>The Restore method restores the memory allocation for a lost sound buffer.	
    /// </td></tr> </table>Play Management<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundBuffer8::GetCurrentPosition </td><td>The GetCurrentPosition method retrieves the position of the play and write cursors in the sound buffer.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Lock </td><td>The Lock method readies all or part of the buffer for a data write and returns references to which data can be written.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Play </td><td>The Play method causes the sound buffer to play, starting at the play cursor.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetCurrentPosition </td><td>The SetCurrentPosition method sets the position of the play cursor, which is the point at which the next byte of data is read from the buffer.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Stop </td><td>The Stop method causes the sound buffer to stop playing.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Unlock </td><td>The Unlock method releases a locked sound buffer.	
    /// </td></tr> </table>Sound Parameters<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundBuffer8::GetFrequency </td><td>The GetFrequency method retrieves the frequency, in samples per second, at which the buffer is playing.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::GetPan </td><td>The GetPan method retrieves the relative volume of the left and right audio channels.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::GetVolume </td><td>The GetVolume method retrieves the attenuation of the sound.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetFrequency </td><td>The SetFrequency method sets the frequency at which the audio samples are played.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetPan </td><td>The SetPan method sets the relative volume of the left and right channels.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetVolume </td><td>The SetVolume method sets the attenuation of the sound.	
    /// </td></tr> </table>Miscellaneous<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundBuffer8::GetCaps </td><td>The GetCaps method retrieves the capabilities of the buffer object.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::GetFormat </td><td>The GetFormat method retrieves a description of the format of the sound data in the buffer, or the buffer size needed to retrieve the format description.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::GetStatus </td><td>The GetStatus method retrieves the status of the sound buffer.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Initialize </td><td>The Initialize method initializes a sound buffer object if it has not yet been initialized.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetFormat </td><td>The SetFormat method sets the format of the primary buffer. Whenever this application has the input focus, DirectSound will set the primary buffer to the specified format.	
    /// </td></tr> </table><p>The LPDIRECTSOUNDBUFFER8 type is defined as a reference to the <see cref="SharpDX.DirectSound.SoundBuffer"/> interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/>  *LPDIRECTSOUNDBUFFER8; 	
    /// </pre>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer8']/*"/>	
    /// <msdn-id>ee418055</msdn-id>	
    /// <unmanaged>IDirectSoundBuffer8</unmanaged>	
    /// <unmanaged-short>IDirectSoundBuffer8</unmanaged-short>	
    [Guid("6825a449-7524-4d82-920f-50e36ab3ab1e")]
    public partial class SecondarySoundBuffer : SharpDX.DirectSound.SoundBuffer {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public SecondarySoundBuffer(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.SecondarySoundBuffer(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.SecondarySoundBuffer(nativePointer);
		}
        
        
        /// <summary>	
        /// The SetFX method enables effects on a buffer.<p>For this method to succeed, CoInitialize must have been called.  Additionally, the buffer must not be playing or locked.</p>	
        /// </summary>	
        /// <param name="effectsCount"><dd> Number of elements in the pDSFXDesc and pdwResultCodes arrays. If this value is 0, pDSFXDesc and pdwResultCodes must both be <c>null</c>. Set to 0 to remove all effects from the buffer. </dd></param>	
        /// <param name="dSFXDescRef"><dd> Address of an array of <see cref="SharpDX.DirectSound.SoundBufferEffectDescription"/> structures, of size dwEffectsCount, that specifies the effects wanted on the buffer. Must be <c>null</c> if dwEffectsCount is 0. </dd></param>	
        /// <param name="esultCodesRef"><dd> Address of an array of DWORD elements, of size <em>dwEffectsCount</em>. Each element receives one of the values shown in the following table, indicating the result of the attempt to create the corresponding effect in the <em>pDSFXDesc</em> array. <table><tr><th>Note </th></tr><tr><td>This parameter must be <c>null</c> if <em>dwEffectsCount</em> is 0, or can be <c>null</c> if results are not wanted.</td></tr></table> <table> <tr><th>Value</th><th>Description</th></tr> <tr><td><see cref="SharpDX.DirectSound.I3DL2MaterialPreset.LocatedInHardware"/></td><td>Effect is instantiated in hardware.</td></tr> <tr><td><see cref="SharpDX.DirectSound.I3DL2MaterialPreset.LocatedInSoftware"/></td><td>Effect is instantiated in software.</td></tr> <tr><td><see cref="SharpDX.DirectSound.I3DL2MaterialPreset.Unallocated"/></td><td>Effect has not yet been assigned to hardware or software. This value is returned if the buffer was created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag in <see cref="SharpDX.DirectSound.SoundBufferDescription"/>.</td></tr> <tr><td><see cref="SharpDX.DirectSound.I3DL2MaterialPreset.Failed"/></td><td>No effect was created because resources weren't available.</td></tr> <tr><td><see cref="SharpDX.DirectSound.I3DL2MaterialPreset.Present"/></td><td>Effect is available but was not created because one of the other effects requested could not be created. If any of the effects requested cannot be created, none of them are, and the call fails.</td></tr> <tr><td><see cref="SharpDX.DirectSound.I3DL2MaterialPreset.Unknown"/></td><td>Effect is not registered on the system, and the method failed as a result.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK or DS_INCOMPLETE. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><th>Return code</th></tr> <tr><td>CO_E_NOTINITIALIZED</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_NOINTERFACE </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table> <p>In addition, the method can return an error value from DMO methods, including <see cref="SharpDX.MediaFoundation.IMediaObject.SetInputType"/> and <see cref="SharpDX.MediaFoundation.IMediaObject.SetOutputType"/>. See the DirectShow documentation for possible error values.</p></returns>	
        /// <remarks>	
        /// <p>If the method fails, the value for each effect in pdwResultCodes is either DSFXF_PRESENT or <see cref="SharpDX.DirectSound.I3DL2MaterialPreset.Unknown"/>. Check these values to determine which effects caused the failure.</p> <p>For the method to succeed, the buffer must have been created with the <see cref="SharpDX.DirectSound.BufferFlags.ControlEffects"/> flag and must not be playing or locked.</p> <p>If the method returns DSERR_NOINTERFACE or another COM error, check the result code array for <see cref="SharpDX.DirectSound.I3DL2MaterialPreset.Present"/> or <see cref="SharpDX.DirectSound.I3DL2MaterialPreset.Unknown"/> to ascertain which effect caused the error. If the method returns DSERR_INVALIDPARAM, check the result codes for <see cref="SharpDX.DirectSound.I3DL2MaterialPreset.Failed"/> to see which effects failed to acquire resources.</p> <p>An effect must be set on a buffer before the effect interface can be obtained. To obtain the effect interface, use GetObjectInPath.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer8::SetFX']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.setfx</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer8::SetFX([In] unsigned int dwEffectsCount,[In, Buffer, Optional] DSEFFECTDESC* pDSFXDesc,[InOut, Buffer] DSOUND_ENUM_0* pdwResultCodes)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer8::SetFX</unmanaged-short>	
        internal void SetEffect(int effectsCount, SharpDX.DirectSound.SoundBufferEffectDescription[] dSFXDescRef, SharpDX.DirectSound.SoundEffectResult[] esultCodesRef) {
            unsafe {
                SharpDX.DirectSound.SoundBufferEffectDescription.__Native[] dSFXDescRef__ = (dSFXDescRef == null)? null : new SharpDX.DirectSound.SoundBufferEffectDescription.__Native[dSFXDescRef.Length];
				if (dSFXDescRef != null)
                for (int i = 0; i < dSFXDescRef.Length; i++)
                    dSFXDescRef[i].__MarshalTo(ref dSFXDescRef__[i]);				
                SharpDX.Result __result__;
                fixed (void* dSFXDescRef_ = dSFXDescRef__)
                    fixed (void* esultCodesRef_ = esultCodesRef)
                        __result__= 
        				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, effectsCount, dSFXDescRef_, esultCodesRef_,((void**)(*(void**)_nativePointer))[21]);		
                if (dSFXDescRef != null )															
                for (int i = 0; i < dSFXDescRef.Length; i++)
                    dSFXDescRef[i].__MarshalFree(ref dSFXDescRef__[i]);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The AcquireResources method allocates resources for a buffer that was created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag in theDSBUFFERDESCstructure.	
        /// </summary>	
        /// <param name="flags">No documentation.</param>	
        /// <param name="effectsCount">No documentation.</param>	
        /// <param name="esultCodesRef">No documentation.</param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK or DS_INCOMPLETE. If the method fails, the return value may be one of the error values shown in the following table.</p> <table> <tr><th>Return code</th></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>Normally, buffers created with <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> are not allocated resources until Play is called. <see cref="SharpDX.DirectSound.SecondarySoundBuffer.AcquireResources"/> can be used to allocate resources for a deferred buffer before it is played. By doing so, the application can retrieve information about effects processing and set effect parameters. If the method fails, check the values in pdwResultCodes to determine which effects caused the failure.</p> <p>A buffer with acquired resources that is not yet playing is not a candidate for premature termination by the voice management flags passed to the Play method.</p> <p>Resources that have been acquired by AcquireResources are released when playback is stopped.</p> <p>If the method is called on a buffer on which it has already been called, the status of the effects is returned but no additional resources are allocated.</p> <p>The dwEffectsCount parameter to this function must be the same as the one passed in the call to SetFX.</p> <p>If an attempt is made to acquire resources for a buffer with the <see cref="SharpDX.DirectSound.BufferFlags.Hardware"/> flag on a system where hardware acceleration is not available, the method fails with either DSERR_CONTROLUNAVAIL or DSERR_INVALIDCALL, depending on the operating system.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer8::AcquireResources']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.acquireresources</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer8::AcquireResources([In] unsigned int dwFlags,[In] unsigned int dwEffectsCount,[Out, Buffer] unsigned int* pdwResultCodes)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer8::AcquireResources</unmanaged-short>	
        public void AcquireResources(int flags, int effectsCount, int[] esultCodesRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* esultCodesRef_ = esultCodesRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, flags, effectsCount, esultCodesRef_,((void**)(*(void**)_nativePointer))[22]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetObjectInPath method retrieves an interface for an effect object associated with the buffer.	
        /// </summary>	
        /// <param name="rguidObject"><dd> Unique class identifier of the object being searched for, such as <see cref="SharpDX.DirectSound.SoundEffectGuid.StandardEcho"/>. Set this parameter to <see cref="SharpDX.DirectSound.DSound.AllObjects"/> to search for objects of any class. </dd></param>	
        /// <param name="index"><dd> Index of the object within objects of that class in the path. See Remarks.  </dd></param>	
        /// <param name="rguidInterface"><dd> Unique identifier of the desired interface. See Remarks. </dd></param>	
        /// <param name="objectOut"><dd> Address of a variable that receives the desired interface reference. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OBJECTNOTFOUND </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>Any DMO that has been set on a buffer by using SetFX can be retrieved, even it has not been allocated resources.</p> <p>The following interfaces can be retrieved for the various DMOs supplied with DirectX.</p> <table> <tr><td>rguidInterface	
        /// </td><td>*ppObject	
        /// </td></tr> <tr><td>IID_IDirectSoundFXGargle8	
        /// </td><td>IDirectSoundFXGargle8 </td></tr> <tr><td>IID_IDirectSoundFXChorus8	
        /// </td><td>IDirectSoundFXChorus8 </td></tr> <tr><td>IID_IDirectSoundFXFlanger8	
        /// </td><td>IDirectSoundFXFlanger8 </td></tr> <tr><td>IID_IDirectSoundFXEcho8	
        /// </td><td>IDirectSoundFXEcho8 </td></tr> <tr><td>IID_IDirectSoundFXDistortion8	
        /// </td><td>IDirectSoundFXDistortion8 </td></tr> <tr><td>IID_IDirectSoundFXCompressor8	
        /// </td><td>IDirectSoundFXCompressor8 </td></tr> <tr><td>IID_IDirectSoundFXParamEq8	
        /// </td><td>IDirectSoundFXParamEq8 </td></tr> <tr><td>IID_IDirectSoundFXWavesReverb8	
        /// </td><td>IDirectSoundFXWavesReverb8 </td></tr> <tr><td>IID_IDirectSoundFXI3DL2Reverb8	
        /// </td><td>IDirectSoundFXI3DL2Reverb8 </td></tr> </table> <p>In addition, the following interfaces are available for any of the standard DMOs. For information on these interfaces, see the Help for DirectX Media Objects.</p> <table> <tr><td>rguidInterface	
        /// </td><td>*ppObject	
        /// </td></tr> <tr><td>IID_IMediaObject	
        /// </td><td><see cref="SharpDX.MediaFoundation.IMediaObject"/>	
        /// </td></tr> <tr><td>IID_IMediaObjectInPlace	
        /// </td><td><see cref="SharpDX.MediaFoundation.IMediaObjectInPlace"/>	
        /// </td></tr> <tr><td>IID_IMediaParams	
        /// </td><td>IMediaParams	
        /// </td></tr> </table> <p>NoteWhen the DirectSound API is used to play buffers, parameter curves (envelopes) set by using the IMediaParams interface do not work, because DirectSound does not timestamp the DMO buffers.</p> <p>The value in dwIndex is the index of the object within the array of effects passed to SetFX. This is not necessarily the actual position of the object in the effects chain, because some effects might not have been created.</p> <p>An object is returned solely on the basis of whether it matches rguidObject and dwIndex. It is up to the application to ensure that rguidInterface specifies an interface that can be expected to be found on the object.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer8::GetObjectInPath']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getobjectinpath</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer8::GetObjectInPath([In] const GUID&amp; rguidObject,[In] unsigned int dwIndex,[In] const GUID&amp; rguidInterface,[Out] void** ppObject)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer8::GetObjectInPath</unmanaged-short>	
        internal void GetEffect(System.Guid rguidObject, int index, System.Guid rguidInterface, out System.IntPtr objectOut) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* objectOut_ = &objectOut)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &rguidObject, index, &rguidInterface, objectOut_,((void**)(*(void**)_nativePointer))[23]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface is used to manage sound buffers.</p><p>The <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface supersedes <see cref="SharpDX.DirectSound.SoundBuffer"/> and adds new methods.</p><p>To obtain the interface, use the CreateSoundBuffer method to retrieve <see cref="SharpDX.DirectSound.SoundBuffer"/>, and then pass IID_IDirectSoundBuffer8 to IDirectSoundBuffer::QueryInterface.</p><p>For the primary buffer, you must use the <see cref="SharpDX.DirectSound.SoundBuffer"/> interface; <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> is not available. <see cref="SharpDX.DirectSound.SoundBuffer"/> is not documented separately. For documentation, see the corresponding <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> methods.</p><p>Not all methods of <see cref="SharpDX.DirectSound.SoundBuffer"/> are valid for primary buffers. For example, SetCurrentPosition will fail. See the reference topics for individual methods.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface exposes the following methods, arranged by category.</p>Effects<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.SecondarySoundBuffer.GetEffect"/> </td><td>The GetObjectInPath method retrieves an interface for an effect object associated with the buffer.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SecondarySoundBuffer.SetEffect"/> </td><td>Number of elements in the pDSFXDesc and pdwResultCodes arrays. If this value is 0, pDSFXDesc and pdwResultCodes must both be <c>null</c>. Set to 0 to remove all effects from the buffer.	
    /// </td></tr> </table>Resource Management<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.SecondarySoundBuffer.AcquireResources"/> </td><td>The AcquireResources method allocates resources for a buffer that was created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag in the DSBUFFERDESCDSBUFFERDESC	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Restore </td><td>The Restore method restores the memory allocation for a lost sound buffer.	
    /// </td></tr> </table>Play Management<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundBuffer8::GetCurrentPosition </td><td>The GetCurrentPosition method retrieves the position of the play and write cursors in the sound buffer.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Lock </td><td>The Lock method readies all or part of the buffer for a data write and returns references to which data can be written.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Play </td><td>The Play method causes the sound buffer to play, starting at the play cursor.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetCurrentPosition </td><td>The SetCurrentPosition method sets the position of the play cursor, which is the point at which the next byte of data is read from the buffer.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Stop </td><td>The Stop method causes the sound buffer to stop playing.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Unlock </td><td>The Unlock method releases a locked sound buffer.	
    /// </td></tr> </table>Sound Parameters<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundBuffer8::GetFrequency </td><td>The GetFrequency method retrieves the frequency, in samples per second, at which the buffer is playing.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::GetPan </td><td>The GetPan method retrieves the relative volume of the left and right audio channels.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::GetVolume </td><td>The GetVolume method retrieves the attenuation of the sound.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetFrequency </td><td>The SetFrequency method sets the frequency at which the audio samples are played.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetPan </td><td>The SetPan method sets the relative volume of the left and right channels.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetVolume </td><td>The SetVolume method sets the attenuation of the sound.	
    /// </td></tr> </table>Miscellaneous<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundBuffer8::GetCaps </td><td>The GetCaps method retrieves the capabilities of the buffer object.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::GetFormat </td><td>The GetFormat method retrieves a description of the format of the sound data in the buffer, or the buffer size needed to retrieve the format description.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::GetStatus </td><td>The GetStatus method retrieves the status of the sound buffer.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::Initialize </td><td>The Initialize method initializes a sound buffer object if it has not yet been initialized.	
    /// </td></tr> <tr><td>IDirectSoundBuffer8::SetFormat </td><td>The SetFormat method sets the format of the primary buffer. Whenever this application has the input focus, DirectSound will set the primary buffer to the specified format.	
    /// </td></tr> </table><p>The LPDIRECTSOUNDBUFFER8 type is defined as a reference to the <see cref="SharpDX.DirectSound.SoundBuffer"/> interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/>  *LPDIRECTSOUNDBUFFER8; 	
    /// </pre>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer']/*"/>	
    /// <msdn-id>ee418055</msdn-id>	
    /// <unmanaged>IDirectSoundBuffer</unmanaged>	
    /// <unmanaged-short>IDirectSoundBuffer</unmanaged-short>	
    [Guid("279afa85-4981-11ce-a521-0020af0be560")]
    public partial class SoundBuffer : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.SoundBuffer"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public SoundBuffer(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.SoundBuffer"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.SoundBuffer(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.SoundBuffer(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetCaps method retrieves the capabilities of the buffer object.	
        /// </summary>	
        /// <remarks>	
        /// <p>The <see cref="SharpDX.DirectSound.BufferCapabilities"/> structure contains similar information to the <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure passed to the CreateSoundBuffer method, with some additional information. This additional information can include the buffer's location, either in hardware or software, and performance measures.</p> <p>The flags specified in the dwFlags member of the <see cref="SharpDX.DirectSound.BufferCapabilities"/> structure are the same flags used by the <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure. The only difference is that in the <see cref="SharpDX.DirectSound.BufferCapabilities"/> structure, either <see cref="SharpDX.DirectSound.BufferFlags.Hardware"/> or <see cref="SharpDX.DirectSound.BufferFlags.Software"/> will be specified according to the location of the buffer memory. In the <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure, these flags are optional and, depending on which flag is specified, force the buffer to be located in either hardware or software.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetCaps']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getcaps</msdn-id>	
        /// <unmanaged>GetCaps</unmanaged>	
        /// <unmanaged-short>GetCaps</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetCaps([Out] DSBCAPS* pDSBufferCaps)</unmanaged>
        public SharpDX.DirectSound.BufferCapabilities Capabilities {
                get { SharpDX.DirectSound.BufferCapabilities __output__; GetCapabilities(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// The GetVolume method retrieves the attenuation of the sound.	
        /// </summary>	
        /// <remarks>	
        /// <p>The return value is between <see cref="SharpDX.DirectSound.Volume.Maximum"/> and <see cref="SharpDX.DirectSound.Volume.Minimum"/>. These values are defined as 0 and ?10,000, respectively. The value <see cref="SharpDX.DirectSound.Volume.Maximum"/> represents the original, unadjusted volume of the sound. The value <see cref="SharpDX.DirectSound.Volume.Minimum"/> indicates an audio volume attenuated by 100 dB, which, for practical purposes, is silence.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetVolume']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getvolume</msdn-id>	
        /// <unmanaged>GetVolume / SetVolume</unmanaged>	
        /// <unmanaged-short>GetVolume</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetVolume([Out] int* plVolume)</unmanaged>
        public int Volume {
                get { int __output__; GetVolume(out __output__); return __output__; }
                set { SetVolume(value); }
        }
        
        /// <summary>	
        /// The GetPan method retrieves the relative volume of the left and right audio channels.	
        /// </summary>	
        /// <remarks>	
        /// <p>The returned value is measured in hundredths of a decibel (dB), in the range of DSBPAN_LEFT to DSBPAN_RIGHT. These values are defined in Dsound.h as -10,000 and 10,000 respectively. The value DSBPAN_LEFT means the right channel is effectively silent. The value DSBPAN_RIGHT means the left channel is effectively silent. The neutral value is DSBPAN_CENTER, defined as 0, which means that both channels are at full volume. When one channel is attenuated, the other remains at full volume.</p> <p>The pan control acts cumulatively with the volume control.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetPan']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getpan</msdn-id>	
        /// <unmanaged>GetPan / SetPan</unmanaged>	
        /// <unmanaged-short>GetPan</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetPan([Out] int* plPan)</unmanaged>
        public int Pan {
                get { int __output__; GetPan(out __output__); return __output__; }
                set { SetPan(value); }
        }
        
        /// <summary>	
        /// The GetFrequency method retrieves the frequency, in samples per second, at which the buffer is playing.	
        /// </summary>	
        /// <remarks>	
        /// <p>The frequency value for software buffers is in the range of DSBFREQUENCY_MIN to DSBFREQUENCY_MAX, defined in Dsound.h. Hardware buffers can return other values.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetFrequency']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getfrequency</msdn-id>	
        /// <unmanaged>GetFrequency / SetFrequency</unmanaged>	
        /// <unmanaged-short>GetFrequency</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetFrequency([Out] unsigned int* pdwFrequency)</unmanaged>
        public int Frequency {
                get { int __output__; GetFrequency(out __output__); return __output__; }
                set { SetFrequency(value); }
        }
        
        /// <summary>	
        /// The GetStatus method retrieves the status of the sound buffer.	
        /// </summary>	
        /// <remarks>	
        /// <p><see cref="SharpDX.DirectSound.BufferStatus.Playing"/> is set if the buffer is being heard. Because of latency, a call to Play or Stop might not immediately change the status.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetStatus']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getstatus</msdn-id>	
        /// <unmanaged>GetStatus</unmanaged>	
        /// <unmanaged-short>GetStatus</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetStatus([Out] unsigned int* pdwStatus)</unmanaged>
        public int Status {
                get { int __output__; GetStatus(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// The SetCurrentPosition method sets the position of the play cursor, which is the point at which the next byte of data is read from the buffer.	
        /// </summary>	
        /// <remarks>	
        /// <p>This method cannot be called on the primary buffer.</p> <p>If the buffer is playing, the cursor immediately moves to the new position and play continues from that point. If it is not playing, playback will begin from the new position the next time the Play method is called.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::SetCurrentPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.setcurrentposition</msdn-id>	
        /// <unmanaged>SetCurrentPosition</unmanaged>	
        /// <unmanaged-short>SetCurrentPosition</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::SetCurrentPosition([In] unsigned int dwNewPosition)</unmanaged>
        public int CurrentPosition {
                set { SetCurrentPosition(value); }
        }
        
        /// <summary>	
        /// The GetCaps method retrieves the capabilities of the buffer object.	
        /// </summary>	
        /// <param name="dSBufferCapsRef"><dd> Address of a <see cref="SharpDX.DirectSound.BufferCapabilities"/> structure to contain the capabilities of this sound buffer. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The <see cref="SharpDX.DirectSound.BufferCapabilities"/> structure contains similar information to the <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure passed to the CreateSoundBuffer method, with some additional information. This additional information can include the buffer's location, either in hardware or software, and performance measures.</p> <p>The flags specified in the dwFlags member of the <see cref="SharpDX.DirectSound.BufferCapabilities"/> structure are the same flags used by the <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure. The only difference is that in the <see cref="SharpDX.DirectSound.BufferCapabilities"/> structure, either <see cref="SharpDX.DirectSound.BufferFlags.Hardware"/> or <see cref="SharpDX.DirectSound.BufferFlags.Software"/> will be specified according to the location of the buffer memory. In the <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure, these flags are optional and, depending on which flag is specified, force the buffer to be located in either hardware or software.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetCaps']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getcaps</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetCaps([Out] DSBCAPS* pDSBufferCaps)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::GetCaps</unmanaged-short>	
        internal void GetCapabilities(out SharpDX.DirectSound.BufferCapabilities dSBufferCapsRef) {
            unsafe {
                var dSBufferCapsRef_ = SharpDX.DirectSound.BufferCapabilities.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &dSBufferCapsRef_,((void**)(*(void**)_nativePointer))[3]);		
                dSBufferCapsRef = new SharpDX.DirectSound.BufferCapabilities();
                dSBufferCapsRef.__MarshalFrom(ref dSBufferCapsRef_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetCurrentPosition method retrieves the position of the play and write cursors in the sound buffer.	
        /// </summary>	
        /// <param name="urrentPlayCursorRef"><dd> Address of a variable that receives the offset, in bytes, of the play cursor. This parameter can be <c>null</c> if the value is not wanted. </dd></param>	
        /// <param name="urrentWriteCursorRef"><dd> Address of a variable that receives the offset, in bytes, of the write cursor. This parameter can be <c>null</c> if the value is not wanted. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The write cursor is the point in the buffer ahead of which it is safe to write data to the buffer. Data should not be written to the part of the buffer after the play cursor and before the write cursor.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetCurrentPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getcurrentposition</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetCurrentPosition([Out, Optional] unsigned int* pdwCurrentPlayCursor,[Out, Optional] unsigned int* pdwCurrentWriteCursor)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::GetCurrentPosition</unmanaged-short>	
        public void GetCurrentPosition(out int urrentPlayCursorRef, out int urrentWriteCursorRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* urrentPlayCursorRef_ = &urrentPlayCursorRef)
                    fixed (void* urrentWriteCursorRef_ = &urrentWriteCursorRef)
                        __result__= 
        				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, urrentPlayCursorRef_, urrentWriteCursorRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetFormat method retrieves a description of the format of the sound data in the buffer, or the buffer size needed to retrieve the format description.	
        /// </summary>	
        /// <param name="wfxFormatRef"><dd> Address of a <see cref="SharpDX.Multimedia.WaveFormat"/> or <see cref="SharpDX.Multimedia.WaveFormatExtensible"/> structure that receives a description of the sound data in the buffer. To retrieve the buffer size needed to contain the format description, specify <c>null</c>. In this case the variable at pdwSizeWritten receives the size of the structure needed to receive the data. </dd></param>	
        /// <param name="sizeAllocated"><dd> Size, in bytes, of the structure at pwfxFormat. If pwfxFormat is not <c>null</c>, this value must be equal to or greater than the size of the expected data. </dd></param>	
        /// <param name="izeWrittenRef"><dd> Address of a variable that receives the number of bytes written to the structure at pwfxFormat. This parameter can be <c>null</c>. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The format structure can have a variable length that depends on the format. Before retrieving the format description, the application should query the buffer object for the size of the format by calling this method and specifying <c>null</c> for the pwfxFormat parameter. The necessary size of the structure is returned in the pdwSizeWritten parameter. The application can then allocate sufficient memory and call GetFormat again to retrieve the format description.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetFormat']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getformat</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetFormat([Out, Buffer, Optional] WAVEFORMATEX* pwfxFormat,[In] unsigned int dwSizeAllocated,[Out, Optional] unsigned int* pdwSizeWritten)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::GetFormat</unmanaged-short>	
        public void GetFormat(SharpDX.Multimedia.WaveFormat[] wfxFormatRef, int sizeAllocated, out int izeWrittenRef) {
            unsafe {
                SharpDX.Multimedia.WaveFormat.__Native[] wfxFormatRef__ = (wfxFormatRef == null)? null : new SharpDX.Multimedia.WaveFormat.__Native[wfxFormatRef.Length];
                SharpDX.Result __result__;
                fixed (void* wfxFormatRef_ = wfxFormatRef__)
                    fixed (void* izeWrittenRef_ = &izeWrittenRef)
                        __result__= 
        				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, wfxFormatRef_, sizeAllocated, izeWrittenRef_,((void**)(*(void**)_nativePointer))[5]);		
                for (int i = 0; i < wfxFormatRef.Length; i++)
                    wfxFormatRef[i].__MarshalFrom(ref wfxFormatRef__[i]);				
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetVolume method retrieves the attenuation of the sound.	
        /// </summary>	
        /// <param name="lVolumeRef"><dd> Address of a variable that receives the attenuation, in hundredths of a decibel. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The return value is between <see cref="SharpDX.DirectSound.Volume.Maximum"/> and <see cref="SharpDX.DirectSound.Volume.Minimum"/>. These values are defined as 0 and ?10,000, respectively. The value <see cref="SharpDX.DirectSound.Volume.Maximum"/> represents the original, unadjusted volume of the sound. The value <see cref="SharpDX.DirectSound.Volume.Minimum"/> indicates an audio volume attenuated by 100 dB, which, for practical purposes, is silence.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetVolume']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getvolume</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetVolume([Out] int* plVolume)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::GetVolume</unmanaged-short>	
        internal void GetVolume(out int lVolumeRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* lVolumeRef_ = &lVolumeRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, lVolumeRef_,((void**)(*(void**)_nativePointer))[6]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetPan method retrieves the relative volume of the left and right audio channels.	
        /// </summary>	
        /// <param name="lPanRef"><dd> Address of a variable that receives the relative volume, in hundredths of a decibel. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The returned value is measured in hundredths of a decibel (dB), in the range of DSBPAN_LEFT to DSBPAN_RIGHT. These values are defined in Dsound.h as -10,000 and 10,000 respectively. The value DSBPAN_LEFT means the right channel is effectively silent. The value DSBPAN_RIGHT means the left channel is effectively silent. The neutral value is DSBPAN_CENTER, defined as 0, which means that both channels are at full volume. When one channel is attenuated, the other remains at full volume.</p> <p>The pan control acts cumulatively with the volume control.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetPan']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getpan</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetPan([Out] int* plPan)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::GetPan</unmanaged-short>	
        internal void GetPan(out int lPanRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* lPanRef_ = &lPanRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, lPanRef_,((void**)(*(void**)_nativePointer))[7]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetFrequency method retrieves the frequency, in samples per second, at which the buffer is playing.	
        /// </summary>	
        /// <param name="requencyRef"><dd> Address of a variable that receives the frequency at which the audio buffer is being played, in hertz. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The frequency value for software buffers is in the range of DSBFREQUENCY_MIN to DSBFREQUENCY_MAX, defined in Dsound.h. Hardware buffers can return other values.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetFrequency']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getfrequency</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetFrequency([Out] unsigned int* pdwFrequency)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::GetFrequency</unmanaged-short>	
        internal void GetFrequency(out int requencyRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* requencyRef_ = &requencyRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, requencyRef_,((void**)(*(void**)_nativePointer))[8]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetStatus method retrieves the status of the sound buffer.	
        /// </summary>	
        /// <param name="tatusRef"><dd> Address of a variable that receives the status of the sound buffer. The status can be a combination of the following flags:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref="SharpDX.DirectSound.BufferStatus.BufferLost"/></td><td>The buffer is lost and must be restored before it can be played or locked.</td></tr> <tr><td><see cref="SharpDX.DirectSound.BufferStatus.Looping"/></td><td>The buffer is being looped. If this value is not set, the buffer will stop when it reaches the end of the sound data. This value is returned only in combination with <see cref="SharpDX.DirectSound.BufferStatus.Playing"/>.</td></tr> <tr><td><see cref="SharpDX.DirectSound.BufferStatus.Playing"/></td><td>The buffer is playing. If this value is not set, the buffer is stopped.</td></tr> <tr><td><see cref="SharpDX.DirectSound.BufferStatus.Software"/></td><td>The buffer is playing in software. Set only for buffers created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag.</td></tr> <tr><td><see cref="SharpDX.DirectSound.BufferStatus.Hardware"/></td><td>The buffer is playing in hardware. Set only for buffers created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag.</td></tr> <tr><td><see cref="SharpDX.DirectSound.BufferStatus.Terminated"/></td><td>The buffer was prematurely terminated by the voice manager and is not playing. Set only for buffers created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p><see cref="SharpDX.DirectSound.BufferStatus.Playing"/> is set if the buffer is being heard. Because of latency, a call to Play or Stop might not immediately change the status.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::GetStatus']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.getstatus</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::GetStatus([Out] unsigned int* pdwStatus)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::GetStatus</unmanaged-short>	
        internal void GetStatus(out int tatusRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* tatusRef_ = &tatusRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, tatusRef_,((void**)(*(void**)_nativePointer))[9]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Initialize method initializes a sound buffer object if it has not yet been initialized.	
        /// </summary>	
        /// <param name="directSoundRef"><dd> Address of the device object associated with this buffer. </dd></param>	
        /// <param name="cDSBufferDescRef"><dd> Address of a <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure that contains the values used to initialize this sound buffer. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values.</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_ALREADYINITIALIZED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>Because the CreateSoundBuffer method calls Initialize internally, applications do not need to call this method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::Initialize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.initialize</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::Initialize([In] IDirectSound* pDirectSound,[In] const DSBUFFERDESC* pcDSBufferDesc)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::Initialize</unmanaged-short>	
        public void Initialize(SharpDX.DirectSound.DirectSoundBase directSoundRef, SharpDX.DirectSound.SoundBufferDescription cDSBufferDescRef) {
            unsafe {
                var cDSBufferDescRef_ = SharpDX.DirectSound.SoundBufferDescription.__NewNative();
                cDSBufferDescRef.__MarshalTo(ref cDSBufferDescRef_);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, (void*)((directSoundRef == null)?IntPtr.Zero:directSoundRef.NativePointer), &cDSBufferDescRef_,((void**)(*(void**)_nativePointer))[10]);		
                cDSBufferDescRef.__MarshalFree(ref cDSBufferDescRef_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Lock method readies all or part of the buffer for a data write and returns references to which data can be written.	
        /// </summary>	
        /// <param name="offset"><dd> Offset, in bytes, from the start of the buffer to the point where the lock begins. This parameter is ignored if <see cref="SharpDX.DirectSound.LockFlags.FromWriteCursor"/> is specified in the dwFlags parameter. </dd></param>	
        /// <param name="bytes"><dd> Size, in bytes, of the portion of the buffer to lock. The buffer is conceptually circular, so this number can exceed the number of bytes between dwOffset and the end of the buffer. </dd></param>	
        /// <param name="dioPtr1Out"><dd> Address of a variable that receives a reference to the first locked part of the buffer. </dd></param>	
        /// <param name="udioBytes1Ref"><dd> Address of a variable that receives the number of bytes in the block at ppvAudioPtr1. If this value is less than dwBytes, the lock has wrapped and ppvAudioPtr2 points to a second block of data at the beginning of the buffer. </dd></param>	
        /// <param name="dioPtr2Out"><dd> Address of a variable that receives a reference to the second locked part of the capture buffer. If <c>null</c> is returned, the ppvAudioPtr1 parameter points to the entire locked portion of the capture buffer. </dd></param>	
        /// <param name="udioBytes2Ref"><dd> Address of a variable that receives the number of bytes in the block at ppvAudioPtr2. If ppvAudioPtr2 is <c>null</c>, this value is zero. </dd></param>	
        /// <param name="flags"><dd> Flags modifying the lock event. The following flags are defined: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref="SharpDX.DirectSound.LockFlags.FromWriteCursor"/></td><td>Start the lock at the write cursor. The dwOffset parameter is ignored.</td></tr> <tr><td><see cref="SharpDX.DirectSound.LockFlags.EntireBuffer"/></td><td>Lock the entire buffer. The dwBytes parameter is ignored.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_BUFFERLOST</td></tr> <tr><td>DSERR_INVALIDCALL</td></tr> <tr><td>DSERR_INVALIDPARAM</td></tr> <tr><td>DSERR_PRIOLEVELNEEDED</td></tr> </table></returns>	
        /// <remarks>	
        /// <p>This method accepts an offset and a byte count, and returns two write references and their associated sizes. If the locked portion does not extend to the end of the buffer and wrap to the beginning, the second reference, ppvAudioBytes2, receives <c>null</c>. If the lock does wrap, ppvAudioBytes2 points to the beginning of the buffer.</p> <p>If the application passes <c>null</c> for the ppvAudioPtr2 and pdwAudioBytes2 parameters, the lock extends no further than the end of the buffer and does not wrap.</p> <p>After writing data to the references returned by this method, the application must immediately call Unlock to notify DirectSound that the data is ready for playback. Failure to do so can cause audio breakup or silence on some sound device configurations.</p> <p>This method returns write references only. The application should not try to read sound data from this reference, because the data might not be valid. For example, if the buffer is located in on-card memory, the reference might be an address to a temporary buffer in system memory. When IDirectSoundBuffer8::Unlock is called, the contents of this temporary buffer are transferred to the on-card memory.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::Lock']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.lock</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::Lock([In] unsigned int dwOffset,[In] unsigned int dwBytes,[Out] void** ppvAudioPtr1,[Out] unsigned int* pdwAudioBytes1,[Out] void** ppvAudioPtr2,[Out, Optional] unsigned int* pdwAudioBytes2,[In] DSBLOCK_ENUM dwFlags)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::Lock</unmanaged-short>	
        internal void Lock(int offset, int bytes, out System.IntPtr dioPtr1Out, out int udioBytes1Ref, out System.IntPtr dioPtr2Out, out int udioBytes2Ref, SharpDX.DirectSound.LockFlags flags) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* dioPtr1Out_ = &dioPtr1Out)
                    fixed (void* udioBytes1Ref_ = &udioBytes1Ref)
                        fixed (void* dioPtr2Out_ = &dioPtr2Out)
                            fixed (void* udioBytes2Ref_ = &udioBytes2Ref)
                                __result__= 
                				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, offset, bytes, dioPtr1Out_, udioBytes1Ref_, dioPtr2Out_, udioBytes2Ref_, unchecked((int)flags),((void**)(*(void**)_nativePointer))[11]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Play method causes the sound buffer to play, starting at the play cursor.	
        /// </summary>	
        /// <param name="reserved1"><dd> Reserved. Must be 0. </dd></param>	
        /// <param name="priority"><dd> Priority for the sound, used by the voice manager when assigning hardware mixing resources. The lowest priority is 0, and the highest priority is 0xFFFFFFFF. If the buffer was not created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag, this value must be 0.  </dd></param>	
        /// <param name="flags"><dd> Flags specifying how to play the buffer. The following flags are defined:  <p>Looping flag</p> <table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref="SharpDX.DirectSound.PlayFlags.Looping"/></td><td>After the end of the audio buffer is reached, play restarts at the beginning of the buffer. Play continues until explicitly stopped. This flag must be set when playing a primary buffer.</td></tr> </table> <p>Voice allocation flags</p> <p>The voice allocation flags are valid only for buffers created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag. One of the following flags can be used to force the processing of the sound into hardware or software. If neither DBSPLAY_LOCHARDWARE nor DBSPLAY_LOCSOFTWARE is set, the sound is played in either software or hardware, depending on the availability of resources at the time the method is called. See Remarks.</p> <table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref="SharpDX.DirectSound.PlayFlags.Hardware"/></td><td>Play this voice in a hardware buffer only. If the hardware has no available voices and no voice management flags are set, the call to IDirectSoundBuffer8::Play fails. This flag cannot be combined with <see cref="SharpDX.DirectSound.PlayFlags.Software"/>.</td></tr> <tr><td><see cref="SharpDX.DirectSound.PlayFlags.Software"/></td><td>Play this voice in a software buffer only. This flag cannot be combined with <see cref="SharpDX.DirectSound.PlayFlags.Hardware"/> or any voice management flag.</td></tr> </table> <p>Voice management flags</p> <p>The voice management flags are valid only for buffers created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag, and are used for sounds that are to play in hardware. These flags enable hardware resources that are already in use to be yielded to the current sound. Only buffers created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag are candidates for premature termination. See Remarks.</p> <table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref="SharpDX.DirectSound.PlayFlags.TerminateByTime"/></td><td>If the hardware has no available voices, a currently playing nonlooping buffer will be stopped to make room for the new buffer. The buffer prematurely terminated is the one with the least time left to play.</td></tr> <tr><td><see cref="SharpDX.DirectSound.PlayFlags.TerminateByDistance"/></td><td>If the hardware has no available voices, a currently playing buffer will be stopped to make room for the new buffer. The buffer prematurely terminated will be selected from buffers that have the buffer's DSBCAPS_ MUTE3DATMAXDISTANCE flag set and are beyond their maximum distance. If there are no such buffers, the method fails.</td></tr> <tr><td><see cref="SharpDX.DirectSound.PlayFlags.TerminateByPriority"/></td><td>If the hardware has no available voices, a currently playing buffer will be stopped to make room for the new buffer. The buffer prematurely terminated will be the one with the lowest priority as set by the dwPriority parameter passed to IDirectSoundBuffer8::Play for the buffer.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_BUFFERLOST</td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>If SetCooperativeLevel has not been called, the method returns DS_OK, but no sound will be produced until a cooperative level has been set.</p> <p>If the application is multithreaded, the thread that plays the buffer must continue to exist as long as the buffer is playing. Buffers created on WDM drivers stop playing when the thread is terminated.</p> <p>If the buffer specified in the method is already playing, the call to the method succeeds and the buffer continues to play. However, the flags defined in the most recent call supersede flags defined in previous calls.</p> <p>When called on the primary buffer, this method causes the buffer to start playing to the sound device. If the application has set the <see cref="SharpDX.DirectSound.CooperativeLevel.WritePrimary"/> cooperative level, any audio data put in the primary buffer by the application is sent to the sound device. Under any other cooperative level, the primary buffer plays silence if no secondary buffers are playing. Primary buffers must be played with the <see cref="SharpDX.DirectSound.PlayFlags.Looping"/> flag set.</p> <p>If the method is called with a voice allocation or voice management flag set on a buffer that was not created with the <see cref="SharpDX.DirectSound.BufferFlags.Defer"/> flag, the call fails with DSERR_INVALIDPARAM.</p> <p><see cref="SharpDX.DirectSound.PlayFlags.TerminateByTime"/> and <see cref="SharpDX.DirectSound.PlayFlags.TerminateByDistance"/> cannot be combined, but either may be combined with <see cref="SharpDX.DirectSound.PlayFlags.TerminateByPriority"/>, in which case the <see cref="SharpDX.DirectSound.PlayFlags.TerminateByTime"/> or <see cref="SharpDX.DirectSound.PlayFlags.TerminateByDistance"/> flag is used to determine which buffer should be terminated in the event of a priority tie.</p> <p>The following table shows the behavior of the method under various combinations of the voice allocation and voice management flags when no free hardware voices are available.</p> <table> <tr><td> </td><td><see cref="SharpDX.DirectSound.PlayFlags.Hardware"/>	
        /// </td><td>Neither <see cref="SharpDX.DirectSound.PlayFlags.Hardware"/> nor <see cref="SharpDX.DirectSound.PlayFlags.Software"/>	
        /// </td><td><see cref="SharpDX.DirectSound.PlayFlags.Software"/>	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.PlayFlags.TerminateByTime"/>	
        /// </td><td>Sound with least time left to play is terminated and the new sound plays on the released voice.	
        /// </td><td>Sound with least time left to play is terminated and the new sound plays on the released voice.	
        /// </td><td>New sound plays in software.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.PlayFlags.TerminateByDistance"/>	
        /// </td><td>If any sounds currently playing in hardware are beyond their maximum distance and have the <see cref="SharpDX.DirectSound.BufferFlags.Mute3DAtMaxDistance"/> flag set, one of them is terminated and the new sound plays in hardware. Otherwise, the call fails.	
        /// </td><td>If any sounds currently playing in hardware are beyond their maximum distance and have the <see cref="SharpDX.DirectSound.BufferFlags.Mute3DAtMaxDistance"/> flag set, one of them is terminated and the new sound plays in hardware. Otherwise, the new sound plays in software.	
        /// </td><td>New sound plays in software.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.PlayFlags.TerminateByPriority"/>	
        /// </td><td>If the new sound's priority is higher than or equal to that of any sound currently playing in hardware, one of the lowest-priority sounds is terminated and the new sound plays in hardware. Otherwise, the call fails.	
        /// </td><td>If the new sound's priority is higher than or equal to that of any sound currently playing in hardware, one of the lowest-priority sounds is terminated and the new sound plays in hardware. Otherwise, the new sound plays in software.	
        /// </td><td>New sound plays in software.	
        /// </td></tr> </table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::Play']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.play</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::Play([In] unsigned int dwReserved1,[In] unsigned int dwPriority,[In] DSBPLAY_FLAGS dwFlags)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::Play</unmanaged-short>	
        internal void Play(int reserved1, int priority, SharpDX.DirectSound.PlayFlags flags) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, reserved1, priority, unchecked((int)flags),((void**)(*(void**)_nativePointer))[12]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetCurrentPosition method sets the position of the play cursor, which is the point at which the next byte of data is read from the buffer.	
        /// </summary>	
        /// <param name="newPosition"><dd> Offset of the play cursor, in bytes, from the beginning of the buffer. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>This method cannot be called on the primary buffer.</p> <p>If the buffer is playing, the cursor immediately moves to the new position and play continues from that point. If it is not playing, playback will begin from the new position the next time the Play method is called.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::SetCurrentPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.setcurrentposition</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::SetCurrentPosition([In] unsigned int dwNewPosition)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::SetCurrentPosition</unmanaged-short>	
        internal void SetCurrentPosition(int newPosition) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, newPosition,((void**)(*(void**)_nativePointer))[13]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetFormat method sets the format of the primary buffer. Whenever this application has the input focus, DirectSound will set the primary buffer to the specified format.	
        /// </summary>	
        /// <param name="cfxFormatRef"><dd> Address of a <see cref="SharpDX.Multimedia.WaveFormat"/> structure that describes the new format for the primary sound buffer. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_BADFORMAT </td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> <tr><td>DSERR_UNSUPPORTED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The format of the primary buffer should be set before secondary buffers are created.</p> <p>The method fails if the application has the <see cref="SharpDX.DirectSound.CooperativeLevel.Normal"/> cooperative level.</p> <p>If the application is using DirectSound at the <see cref="SharpDX.DirectSound.CooperativeLevel.WritePrimary"/> cooperative level, and the format is not supported, the method fails.</p> <p>If the cooperative level is <see cref="SharpDX.DirectSound.CooperativeLevel.Priority"/>, DirectSound stops the primary buffer, changes the format, and restarts the buffer. The method succeeds even if the hardware does not support the requested format; DirectSound sets the buffer to the closest supported format. To determine whether this has happened, an application can call the GetFormat method for the primary buffer and compare the result with the format that was requested with the SetFormat method.</p> <p>This method is not available for secondary sound buffers. If a new format is required, the application must create a new DirectSoundBuffer object.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::SetFormat']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.setformat</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::SetFormat([In] const void* pcfxFormat)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::SetFormat</unmanaged-short>	
        internal void SetFormat(System.IntPtr cfxFormatRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, (void*)cfxFormatRef,((void**)(*(void**)_nativePointer))[14]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetVolume method sets the attenuation of the sound.	
        /// </summary>	
        /// <param name="volume"><dd> Attenuation, in hundredths of a decibel (dB). </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>Allowable values are between <see cref="SharpDX.DirectSound.Volume.Maximum"/> (no attenuation) and <see cref="SharpDX.DirectSound.Volume.Minimum"/> (silence). These values are defined in Dsound.h as 0 and ?10,000 respectively. The value <see cref="SharpDX.DirectSound.Volume.Maximum"/> represents the original, unadjusted volume of the stream. The value <see cref="SharpDX.DirectSound.Volume.Minimum"/> indicates an audio volume attenuated by 100 dB, which, for all practical purposes, is silence. DirectSound does not support amplification.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::SetVolume']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.setvolume</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::SetVolume([In] int lVolume)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::SetVolume</unmanaged-short>	
        internal void SetVolume(int volume) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, volume,((void**)(*(void**)_nativePointer))[15]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetPan method sets the relative volume of the left and right channels.	
        /// </summary>	
        /// <param name="pan"><dd> Relative volume between the left and right channels. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The returned value is measured in hundredths of a decibel (dB), in the range of DSBPAN_LEFT to DSBPAN_RIGHT. These values are defined in Dsound.h as -10,000 and 10,000 respectively. The value DSBPAN_LEFT means the right channel is attenuated by 100 dB and is effectively silent. The value DSBPAN_RIGHT means the left channel is silent. The neutral value is DSBPAN_CENTER, defined as 0, which means that both channels are at full volume. When one channel is attenuated, the other remains at full volume.</p> <p>The pan control acts cumulatively with the volume control.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::SetPan']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.setpan</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::SetPan([In] int lPan)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::SetPan</unmanaged-short>	
        internal void SetPan(int pan) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, pan,((void**)(*(void**)_nativePointer))[16]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetFrequency method sets the frequency at which the audio samples are played.	
        /// </summary>	
        /// <param name="frequency"><dd> Frequency, in hertz (Hz), at which to play the audio samples. A value of DSBFREQUENCY_ORIGINAL resets the frequency to the default value of the buffer format. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_CONTROLUNAVAIL </td></tr> <tr><td>DSERR_GENERIC </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>Increasing or decreasing the frequency changes the perceived pitch of the audio data. This method does not affect the format of the buffer.</p> <p>Before setting the frequency, you should ascertain whether the frequency is supported by checking the dwMinSecondarySampleRate and dwMaxSecondarySampleRate members of the <see cref="SharpDX.DirectSound.Capabilities"/> structure for the device. Some operating systems do not support frequencies greater than 100,000 Hz.</p> <p>This method is not valid for the primary buffer.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::SetFrequency']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.setfrequency</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::SetFrequency([In] unsigned int dwFrequency)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::SetFrequency</unmanaged-short>	
        internal void SetFrequency(int frequency) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, frequency,((void**)(*(void**)_nativePointer))[17]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Stop method causes the sound buffer to stop playing.	
        /// </summary>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. Returns an error code if the method fails.</p></returns>	
        /// <remarks>	
        /// <p>For secondary sound buffers, IDirectSoundBuffer8::Stop sets the play cursor to the sample that follows the last sample played. This means that when the Play method is next called on the buffer, it will continue playing where it left off.</p> <p>For the primary buffer, if an application has the <see cref="SharpDX.DirectSound.CooperativeLevel.WritePrimary"/> level, this method will stop the buffer and reset the play cursor to 0 (the beginning of the buffer). This is necessary because the primary buffers on most sound cards can play only from the beginning of the buffer.</p> <p>However, if IDirectSoundBuffer8::Stop is called on a primary buffer and the application has a cooperative level other than <see cref="SharpDX.DirectSound.CooperativeLevel.WritePrimary"/>, this method simply reverses the effects of IDirectSoundBuffer8::Play. It configures the primary buffer to stop if no secondary buffers are playing. If other buffers are playing in this or other applications, the primary buffer will not actually stop until they are stopped. This method is useful because playing the primary buffer consumes processing overhead even if the buffer is playing sound data with the amplitude of 0 decibels.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::Stop']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.stop</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::Stop()</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::Stop</unmanaged-short>	
        public void Stop() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[18]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Unlock method releases a locked sound buffer.	
        /// </summary>	
        /// <param name="vAudioPtr1Ref"><dd> Address of the value retrieved in the ppvAudioPtr1 parameter of the Lock method. </dd></param>	
        /// <param name="audioBytes1"><dd> Number of bytes written to the portion of the buffer at pvAudioPtr1. See Remarks. </dd></param>	
        /// <param name="vAudioPtr2Ref"><dd> Address of the value retrieved in the ppvAudioPtr2 parameter of the IDirectSoundBuffer8::Lock method. </dd></param>	
        /// <param name="audioBytes2"><dd> Number of bytes written to the portion of the buffer at pvAudioPtr2. See Remarks. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDCALL </td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_PRIOLEVELNEEDED </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>An application must pass both references, pvAudioPtr1 and pvAudioPtr2, returned by the IDirectSoundBuffer8::Lock method to ensure the correct pairing of IDirectSoundBuffer8::Lock and IDirectSoundBuffer8::Unlock. The second reference is needed even if nothing was written to the second reference.</p> <p>The values in dwAudioBytes1 and dwAudioBytes2 must specify the number of bytes actually written to each part of the buffer, which might be less than the size of the lock. DirectSound uses these values to determine how much data to commit to the device.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::Unlock']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.unlock</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::Unlock([In, Buffer] void* pvAudioPtr1,[In] unsigned int dwAudioBytes1,[In, Buffer, Optional] void* pvAudioPtr2,[In] unsigned int dwAudioBytes2)</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::Unlock</unmanaged-short>	
        internal void Unlock(System.IntPtr vAudioPtr1Ref, int audioBytes1, System.IntPtr vAudioPtr2Ref, int audioBytes2) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, (void*)vAudioPtr1Ref, audioBytes1, (void*)vAudioPtr2Ref, audioBytes2,((void**)(*(void**)_nativePointer))[19]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The Restore method restores the memory allocation for a lost sound buffer.	
        /// </summary>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:</p> <p>Return code</p> <ul> <li><p>DSERR_BUFFERLOST</p></li> <li><p>DSERR_INVALIDCALL</p></li> <li><p>DSERR_PRIOLEVELNEEDED</p></li> </ul></returns>	
        /// <remarks>	
        /// <p>If the application does not have the input focus, IDirectSoundBuffer8::Restore might not succeed. For example, if the application with the input focus has the <see cref="SharpDX.DirectSound.CooperativeLevel.WritePrimary"/> cooperative level, no other application will be able to restore its buffers. Similarly, an application with the <see cref="SharpDX.DirectSound.CooperativeLevel.WritePrimary"/> cooperative level must have the input focus to restore its primary buffer.</p> <p>After DirectSound restores the buffer memory, the application must rewrite the buffer with valid sound data. DirectSound cannot restore the contents of the memory, only the memory itself.</p> <p>The application can receive notification that a buffer is lost when it specifies that buffer in a call to the Lock or Play method. These methods return DSERR_BUFFERLOST to indicate a lost buffer. The GetStatus method can also be used to retrieve the status of the sound buffer and test for the <see cref="SharpDX.DirectSound.BufferStatus.BufferLost"/> flag.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundBuffer::Restore']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundbuffer8.idirectsoundbuffer8.restore</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundBuffer::Restore()</unmanaged>	
        /// <unmanaged-short>IDirectSoundBuffer::Restore</unmanaged-short>	
        public void Restore() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[20]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSound3DBuffer8 interface is used to retrieve and set parameters that describe the position, orientation, and environment of a sound buffer in 3D space.</p><p>IDirectSound3DBuffer8 is a define for <see cref="SharpDX.DirectSound.SoundBuffer3D"/>. The two interface names are interchangeable.</p><p>The IDirectSound3DBuffer8 interface is obtained from a buffer that was created with the <see cref="SharpDX.DirectSound.BufferFlags.Control3D"/> flag. You can get it from the <see cref="SharpDX.DirectSound.SecondarySoundBuffer"/> interface by using the QueryInterface method.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSound3DBuffer8 interface exposes the following methods, arranged by category.</p>3D mode<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound3DBuffer8::GetMode </td><td>The GetMode method retrieves the operation mode for 3D sound processing.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::SetMode </td><td>The SetMode method sets the operation mode for 3D sound processing.	
    /// </td></tr> </table>Batch Parameters<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound3DBuffer8::GetAllParameters </td><td>The GetAllParameters method retrieves the 3D properties of the sound buffer.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::SetAllParameters </td><td>The SetAllParameters method sets all 3D sound buffer properties.	
    /// </td></tr> </table>Minimum and Maximum Distance<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound3DBuffer8::GetMaxDistance </td><td>The GetMaxDistance method retrieves the maximum distance, which is the distance from the listener beyond which sounds in this buffer are no longer attenuated.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::GetMinDistance </td><td>The GetMinDistance method retrieves the minimum distance, which is the distance from the listener at which sounds in this buffer begin to be attenuated.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::SetMaxDistance </td><td>The SetMaxDistance method sets the maximum distance, which is the distance from the listener beyond which sounds in this buffer are no longer attenuated.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::SetMinDistance </td><td>The SetMinDistance method sets the minimum distance, which is the distance from the listener at which sounds in this buffer begin to be attenuated.	
    /// </td></tr> </table>Position<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound3DBuffer8::GetPosition </td><td>The GetPosition method retrieves the position of the sound source.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::SetPosition </td><td>The SetPosition method sets the position of the sound source.	
    /// </td></tr> </table>Sound Projection Cone<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound3DBuffer8::GetConeAngles </td><td>The GetConeAngles method retrieves the inside and outside angles of the sound projection cone.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::GetConeOrientation </td><td>The GetConeOrientation method retrieves the orientation of the sound projection cone.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::GetConeOutsideVolume </td><td>The GetConeOutsideVolume method retrieves the volume of the sound outside the outside angle of the sound projection cone.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::SetConeAngles </td><td>The SetConeAngles method sets the inside and outside angles of the sound projection cone.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::SetConeOrientation </td><td>The SetConeOrientation method sets the orientation of the sound projection cone.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::SetConeOutsideVolume </td><td>The SetConeOutsideVolume method sets the volume of the sound outside the outside angle of the sound projection cone.	
    /// </td></tr> </table>Velocity<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound3DBuffer8::GetVelocity </td><td>The GetVelocity method retrieves the velocity of the sound source.	
    /// </td></tr> <tr><td>IDirectSound3DBuffer8::SetVelocity </td><td>The SetVelocity method sets the velocity of the sound source.	
    /// </td></tr> </table><p>The LPDIRECTSOUND3DBUFFER type is defined as a reference to the IDirectSound3DBuffer8 interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.SoundBuffer3D"/>  *LPDIRECTSOUND3DBUFFER;	
    /// </pre>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer']/*"/>	
    /// <msdn-id>ee417960</msdn-id>	
    /// <unmanaged>IDirectSound3DBuffer</unmanaged>	
    /// <unmanaged-short>IDirectSound3DBuffer</unmanaged-short>	
    [Guid("279afa86-4981-11ce-a521-0020af0be560")]
    public partial class SoundBuffer3D : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.SoundBuffer3D"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public SoundBuffer3D(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.SoundBuffer3D"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.SoundBuffer3D(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.SoundBuffer3D(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the 3D properties of the sound buffer.	
        /// </summary>	
        /// <param name="ds3dBufferRef"><dd> Address of a <see cref="SharpDX.DirectSound.Buffer3DSettings"/> structure that receives the information describing the 3D characteristics of the sound buffer. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK.</p> <p>If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::GetAllParameters([Out] DS3DBUFFER* pDs3dBuffer)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.Buffer3DSettings ds3dBufferRef) {
            unsafe {
                var ds3dBufferRef_ = SharpDX.DirectSound.Buffer3DSettings.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &ds3dBufferRef_,((void**)(*(void**)_nativePointer))[3]);		
                ds3dBufferRef = new SharpDX.DirectSound.Buffer3DSettings();
                ds3dBufferRef.__MarshalFrom(ref ds3dBufferRef_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetConeAngles method retrieves the inside and outside angles of the sound projection cone.	
        /// </summary>	
        /// <param name="nsideConeAngleRef"><dd> Addresses of a variable that receives the inside angle of the sound projection cone, in degrees. This is the angle within which the sound is at its normal volume. </dd></param>	
        /// <param name="utsideConeAngleRef"><dd> Addresses of a variable that receives the outside angle of the sound projection cone, in degrees. This is the angle outside of which the sound is at its outside volume. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The minimum, maximum, and default cone angles are defined in Dsound.h as DS3D_MINCONEANGLE, DS3D_MAXCONEANGLE, and DS3D_DEFAULTCONEANGLE.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::GetConeAngles']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.getconeangles</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::GetConeAngles([Out] unsigned int* pdwInsideConeAngle,[Out] unsigned int* pdwOutsideConeAngle)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::GetConeAngles</unmanaged-short>	
        internal void GetConeAngles(out int nsideConeAngleRef, out int utsideConeAngleRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* nsideConeAngleRef_ = &nsideConeAngleRef)
                    fixed (void* utsideConeAngleRef_ = &utsideConeAngleRef)
                        __result__= 
        				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, nsideConeAngleRef_, utsideConeAngleRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetConeOrientation method retrieves the orientation of the sound projection cone.	
        /// </summary>	
        /// <param name="vOrientationRef"><dd> Address of a <see cref="SharpDX.Mathematics.Interop.RawVector3"/> structure that receives the orientation of the sound projection cone. The vector information represents the center of the sound cone. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The values returned are not necessarily the same as those set by using the SetConeOrientation method. DirectSound normalizes orientation vectors so that all axes have a magnitude of less than or equal to 1.0.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::GetConeOrientation']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.getconeorientation</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::GetConeOrientation([Out] D3DVECTOR* pvOrientation)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::GetConeOrientation</unmanaged-short>	
        internal void GetConeOrientation(out SharpDX.Mathematics.Interop.RawVector3 vOrientationRef) {
            unsafe {
                vOrientationRef = new SharpDX.Mathematics.Interop.RawVector3();
                SharpDX.Result __result__;
                fixed (void* vOrientationRef_ = &vOrientationRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, vOrientationRef_,((void**)(*(void**)_nativePointer))[5]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetConeOutsideVolume method retrieves the volume of the sound outside the outside angle of the sound projection cone.	
        /// </summary>	
        /// <param name="lConeOutsideVolumeRef"><dd> Address of a variable that receives the cone outside volume for this buffer. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>Volume levels are expressed as attenuation, in hundredths of a decibel. Allowable values are between <see cref="SharpDX.DirectSound.Volume.Maximum"/> (no attenuation) and <see cref="SharpDX.DirectSound.Volume.Minimum"/> (silence). The default value is DS3D_DEFAULTCONEOUTSIDEVOLUME (no attenuation). These values are defined in Dsound.h. DirectSound does not support amplification.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::GetConeOutsideVolume']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.getconeoutsidevolume</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::GetConeOutsideVolume([Out] int* plConeOutsideVolume)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::GetConeOutsideVolume</unmanaged-short>	
        internal void GetConeOutsideVolume(out int lConeOutsideVolumeRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* lConeOutsideVolumeRef_ = &lConeOutsideVolumeRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, lConeOutsideVolumeRef_,((void**)(*(void**)_nativePointer))[6]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetMaxDistance method retrieves the maximum distance, which is the distance from the listener beyond which sounds in this buffer are no longer attenuated.	
        /// </summary>	
        /// <param name="flMaxDistanceRef"><dd> Address of a variable that receives the maximum distance, in meters by default. D3DVALUE is defined as float.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The default maximum distance, defined as DS3D_DEFAULTMAXDISTANCE, is effectively infinite.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::GetMaxDistance']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.getmaxdistance</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::GetMaxDistance([Out] float* pflMaxDistance)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::GetMaxDistance</unmanaged-short>	
        internal void GetMaxDistance(out float flMaxDistanceRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* flMaxDistanceRef_ = &flMaxDistanceRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, flMaxDistanceRef_,((void**)(*(void**)_nativePointer))[7]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetMinDistance method retrieves the minimum distance, which is the distance from the listener at which sounds in this buffer begin to be attenuated.	
        /// </summary>	
        /// <param name="flMinDistanceRef"><dd> Address of a variable that receives the minimum distance, in meters by default. D3DVALUE is defined as float.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>By default, the minimum distance value is DS3D_DEFAULTMINDISTANCE, defined as 1.0 (corresponding to 1.0 meter at the default distance factor of 1.0 meters per unit).</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::GetMinDistance']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.getmindistance</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::GetMinDistance([Out] float* pflMinDistance)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::GetMinDistance</unmanaged-short>	
        internal void GetMinDistance(out float flMinDistanceRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* flMinDistanceRef_ = &flMinDistanceRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, flMinDistanceRef_,((void**)(*(void**)_nativePointer))[8]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetMode method retrieves the operation mode for 3D sound processing.	
        /// </summary>	
        /// <param name="odeRef"><dd> Address of a variable that receives the mode setting. This value will be one of those in the following table. <table> <tr><td>Value</td><td>Description</td></tr> <tr><td><see cref="SharpDX.DirectSound.Mode3D.Disable"/></td><td>Processing of 3D sound is disabled. The sound seems to originate from the center of the listener's head.</td></tr> <tr><td><see cref="SharpDX.DirectSound.Mode3D.HeadRelative"/></td><td>Sound parameters (position, velocity, and orientation) are relative to the listener's parameters. In this mode, the absolute parameters of the sound are updated automatically as the listener's parameters change, so that the relative parameters remain constant.</td></tr> <tr><td><see cref="SharpDX.DirectSound.Mode3D.Normal"/></td><td>Normal processing. This is the default mode.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::GetMode']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.getmode</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::GetMode([Out] unsigned int* pdwMode)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::GetMode</unmanaged-short>	
        internal void GetMode(out int odeRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* odeRef_ = &odeRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, odeRef_,((void**)(*(void**)_nativePointer))[9]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetPosition method retrieves the position of the sound source.	
        /// </summary>	
        /// <param name="vPositionRef"><dd> Address of a <see cref="SharpDX.Mathematics.Interop.RawVector3"/> structure that receives the position of the sound buffer. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>By default, distance units are meters, but the units can be changed by using the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::GetPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.getposition</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::GetPosition([Out] D3DVECTOR* pvPosition)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::GetPosition</unmanaged-short>	
        internal void GetPosition(out SharpDX.Mathematics.Interop.RawVector3 vPositionRef) {
            unsafe {
                vPositionRef = new SharpDX.Mathematics.Interop.RawVector3();
                SharpDX.Result __result__;
                fixed (void* vPositionRef_ = &vPositionRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, vPositionRef_,((void**)(*(void**)_nativePointer))[10]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetVelocity method retrieves the velocity of the sound source.	
        /// </summary>	
        /// <param name="vVelocityRef"><dd> Address of a <see cref="SharpDX.Mathematics.Interop.RawVector3"/> structure that receives the sound buffer's velocity, in meters per second by default. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>Velocity is used for Doppler effects only. It does not actually move the buffer. For more information, see Doppler Effect.</p> <p>The default unit of measurement is meters per second, but this can be changed by using the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::GetVelocity']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.getvelocity</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::GetVelocity([Out] D3DVECTOR* pvVelocity)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::GetVelocity</unmanaged-short>	
        internal void GetVelocity(out SharpDX.Mathematics.Interop.RawVector3 vVelocityRef) {
            unsafe {
                vVelocityRef = new SharpDX.Mathematics.Interop.RawVector3();
                SharpDX.Result __result__;
                fixed (void* vVelocityRef_ = &vVelocityRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, vVelocityRef_,((void**)(*(void**)_nativePointer))[11]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets all 3D sound buffer properties.	
        /// </summary>	
        /// <param name="cDs3dBufferRef"><dd> Address of a <see cref="SharpDX.DirectSound.Buffer3DSettings"/> structure that describes the 3D characteristics of the sound buffer. </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::SetAllParameters([In] const DS3DBUFFER* pcDs3dBuffer,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(SharpDX.DirectSound.Buffer3DSettings cDs3dBufferRef, int apply) {
            unsafe {
                var cDs3dBufferRef_ = SharpDX.DirectSound.Buffer3DSettings.__NewNative();
                cDs3dBufferRef.__MarshalTo(ref cDs3dBufferRef_);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &cDs3dBufferRef_, apply,((void**)(*(void**)_nativePointer))[12]);		
                cDs3dBufferRef.__MarshalFree(ref cDs3dBufferRef_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetConeAngles method sets the inside and outside angles of the sound projection cone.	
        /// </summary>	
        /// <param name="insideConeAngle"><dd> Inside cone angle, in degrees. This is the angle within which the sound is at its normal volume. </dd></param>	
        /// <param name="outsideConeAngle"><dd> Outside cone angle, in degrees. This is the angle outside of which the sound is at its outside volume. </dd></param>	
        /// <param name="apply"><dd> Value that indicates when the setting should be applied. Must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The minimum, maximum, and default cone angles are defined in Dsound.h as DS3D_MINCONEANGLE, DS3D_MAXCONEANGLE, and DS3D_DEFAULTCONEANGLE. Each angle must be in the range of 0 degrees (no cone) to 360 degrees (the full sphere). The default value is 360.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::SetConeAngles']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.setconeangles</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::SetConeAngles([In] unsigned int dwInsideConeAngle,[In] unsigned int dwOutsideConeAngle,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::SetConeAngles</unmanaged-short>	
        internal void SetConeAngles(int insideConeAngle, int outsideConeAngle, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, insideConeAngle, outsideConeAngle, apply,((void**)(*(void**)_nativePointer))[13]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetConeOrientation method sets the orientation of the sound projection cone.	
        /// </summary>	
        /// <param name="x"><dd> Value that specifies the x coordinate of the sound cone orientation vector. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="y"><dd> Value that specifies the y coordinate of the sound cone orientation vector. D3DVALUE is defined as float.   </dd></param>	
        /// <param name="z"><dd> Value that specifies the z coordinate of the sound cone orientation vector. D3DVALUE is defined as float.  	 </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>This method has no effect unless the cone angle and cone outside volume have also been set to values other than the default.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::SetConeOrientation']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.setconeorientation</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::SetConeOrientation([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::SetConeOrientation</unmanaged-short>	
        internal void SetConeOrientation(float x, float y, float z, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, x, y, z, apply,((void**)(*(void**)_nativePointer))[14]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetConeOutsideVolume method sets the volume of the sound outside the outside angle of the sound projection cone.	
        /// </summary>	
        /// <param name="coneOutsideVolume"><dd> Cone outside volume, in hundredths of a decibel. </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the those shown in the following table.<table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>Volume levels are represented by attenuation. Allowable values are between <see cref="SharpDX.DirectSound.Volume.Maximum"/> (no attenuation) and <see cref="SharpDX.DirectSound.Volume.Minimum"/> (silence). The default value is DS3D_DEFAULTCONEOUTSIDEVOLUME (no attenuation). These values are defined in Dsound.h. DirectSound does not support amplification.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::SetConeOutsideVolume']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.setconeoutsidevolume</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::SetConeOutsideVolume([In] int lConeOutsideVolume,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::SetConeOutsideVolume</unmanaged-short>	
        internal void SetConeOutsideVolume(int coneOutsideVolume, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, coneOutsideVolume, apply,((void**)(*(void**)_nativePointer))[15]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetMaxDistance method sets the maximum distance, which is the distance from the listener beyond which sounds in this buffer are no longer attenuated.	
        /// </summary>	
        /// <param name="maxDistance"><dd> Maximum distance, in meters by default. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The default maximum distance, defined as DS3D_DEFAULTMAXDISTANCE, is effectively infinite.</p> <p>The default unit of measurement is meters, but this can be changed by using the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::SetMaxDistance']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.setmaxdistance</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::SetMaxDistance([In] float flMaxDistance,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::SetMaxDistance</unmanaged-short>	
        internal void SetMaxDistance(float maxDistance, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, maxDistance, apply,((void**)(*(void**)_nativePointer))[16]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetMinDistance method sets the minimum distance, which is the distance from the listener at which sounds in this buffer begin to be attenuated.	
        /// </summary>	
        /// <param name="minDistance"><dd> Minimum distance, in meters by default. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>By default, the minimum distance value is DS3D_DEFAULTMINDISTANCE, defined as 1.0 (corresponding to 1.0 meter at the default distance factor of 1.0 meters per unit).</p> <p>The default unit of measurement is meters, but this can be changed by using the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::SetMinDistance']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.setmindistance</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::SetMinDistance([In] float flMinDistance,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::SetMinDistance</unmanaged-short>	
        internal void SetMinDistance(float minDistance, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, minDistance, apply,((void**)(*(void**)_nativePointer))[17]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetMode method sets the operation mode for 3D sound processing.	
        /// </summary>	
        /// <param name="mode"><dd> Flag specifying the 3D sound processing mode to be set. The flags in the following table are defined.<table> <tr><th>Value</th><th>Description</th></tr> <tr><td><see cref="SharpDX.DirectSound.Mode3D.Disable"/></td><td>Processing of 3D sound is disabled. The sound seems to originate from the center of the listener's head.</td></tr> <tr><td><see cref="SharpDX.DirectSound.Mode3D.HeadRelative"/></td><td>Sound parameters (position, velocity, and orientation) are relative to the listener's parameters. In this mode, the absolute parameters of the sound are updated automatically as the listener's parameters change, so that the relative parameters remain constant.</td></tr> <tr><td><see cref="SharpDX.DirectSound.Mode3D.Normal"/></td><td>Normal processing. This is the default mode.</td></tr> </table> </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of those in the following table. <table> <tr><th>Value</th><th>Description</th></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::SetMode']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.setmode</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::SetMode([In] unsigned int dwMode,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::SetMode</unmanaged-short>	
        internal void SetMode(int mode, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, mode, apply,((void**)(*(void**)_nativePointer))[18]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetPosition method sets the position of the sound source.	
        /// </summary>	
        /// <param name="x"><dd> Value that specifies the x coordinate of the position vector. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="y"><dd> Value that specifies the y coordinate of the position vector. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="z"><dd> Value that specifies the z coordinate of the position vector. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The default unit of measurement is meters, but this can be changed by using the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::SetPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.setposition</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::SetPosition([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::SetPosition</unmanaged-short>	
        internal void SetPosition(float x, float y, float z, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, x, y, z, apply,((void**)(*(void**)_nativePointer))[19]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetVelocity method sets the velocity of the sound source.	
        /// </summary>	
        /// <param name="x"><dd> Value that specifies the x coordinate of the velocity vector, in meters per second by default. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="y"><dd> Value that specifies the y coordinate of the velocity vector, in meters per second by default. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="z"><dd> Value that specifies the z coordinate of the velocity vector, in meters per second by default. DirectSound may adjust these values to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>Velocity is used only for calculating Doppler effect. It does not change the position of the buffer. For more information, see Doppler Effect.</p> <p>The default unit of measurement is meters per second, but this can be changed by using the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DBuffer::SetVelocity']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dbuffer8.idirectsound3dbuffer8.setvelocity</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DBuffer::SetVelocity([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DBuffer::SetVelocity</unmanaged-short>	
        internal void SetVelocity(float x, float y, float z, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, x, y, z, apply,((void**)(*(void**)_nativePointer))[20]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundNotify8 interface sets up notification events for a playback or capture buffer.</p><p>IDirectSoundNotify8 is a define for <see cref="SharpDX.DirectSound.SoundBufferNotifier"/>. The two interface names are interchangeable.</p><p>The interface is obtained by calling the QueryInterface method of an existing interface on a DirectSound buffer object. Secondary buffers support notifications only if they are created with the <see cref="SharpDX.DirectSound.BufferFlags.ControlPositionNotify"/> flag.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundNotify8 interface exposes the following method.</p>IDirectSoundNotify8 Member<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundNotify8::SetNotificationPositions </td><td>The SetNotificationPositions method sets the notification positions. During capture or playback, whenever the read or play cursor reaches one of the specified offsets, the associated event is signaled.	
    /// </td></tr> </table><p>The LPDIRECTSOUNDNOTIFY type is defined as a reference to the <see cref="SharpDX.DirectSound.SoundBufferNotifier"/> interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.SoundBufferNotifier"/>  *LPDIRECTSOUNDNOTIFY;	
    /// </pre>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundNotify']/*"/>	
    /// <msdn-id>ee418244</msdn-id>	
    /// <unmanaged>IDirectSoundNotify</unmanaged>	
    /// <unmanaged-short>IDirectSoundNotify</unmanaged-short>	
    [Guid("b0210783-89cd-11d0-af08-00a0c925cd16")]
    internal partial class SoundBufferNotifier : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.SoundBufferNotifier"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public SoundBufferNotifier(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.SoundBufferNotifier"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.SoundBufferNotifier(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.SoundBufferNotifier(nativePointer);
		}
        
        
        /// <summary>	
        /// The SetNotificationPositions method sets the notification positions. During capture or playback, whenever the read or play cursor reaches one of the specified offsets, the associated event is signaled.	
        /// </summary>	
        /// <param name="positionNotifies"><dd> Number of <see cref="SharpDX.DirectSound.NotificationPosition"/> structures. </dd></param>	
        /// <param name="cPositionNotifiesRef"><dd> Pointer to an array of <see cref="SharpDX.DirectSound.NotificationPosition"/> structures (the maximum array size is DSBNOTIFICATIONS_MAX). </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values: </p> <table> <tr><td>Return code</td></tr> <tr><td>DSERR_INVALIDPARAM </td></tr> <tr><td>DSERR_OUTOFMEMORY </td></tr> </table></returns>	
        /// <remarks>	
        /// <p>The value DSBPN_OFFSETSTOP can be specified in the dwOffset member to tell DirectSound to signal the associated event when the Stop or Stop method is called or when the end of the buffer has been reached and the playback is not looping. If it is used, this should be the last item in the position-notify array.</p> <p>If a position-notify array has already been set, the method replaces the previous array.</p> <p>The buffer must be stopped when this method is called.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundNotify::SetNotificationPositions']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundnotify8.idirectsoundnotify8.setnotificationpositions</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundNotify::SetNotificationPositions([In] unsigned int dwPositionNotifies,[In, Buffer] const DSBPOSITIONNOTIFY* pcPositionNotifies)</unmanaged>	
        /// <unmanaged-short>IDirectSoundNotify::SetNotificationPositions</unmanaged-short>	
        public void SetNotificationPositions(int positionNotifies, SharpDX.DirectSound.NotificationPosition[] cPositionNotifiesRef) {
            unsafe {
                SharpDX.DirectSound.NotificationPosition.__Native[] cPositionNotifiesRef__ = new SharpDX.DirectSound.NotificationPosition.__Native[cPositionNotifiesRef.Length];
                for (int i = 0; i < cPositionNotifiesRef.Length; i++)
                    cPositionNotifiesRef[i].__MarshalTo(ref cPositionNotifiesRef__[i]);				
                SharpDX.Result __result__;
                fixed (void* cPositionNotifiesRef_ = cPositionNotifiesRef__)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, positionNotifies, cPositionNotifiesRef_,((void**)(*(void**)_nativePointer))[3]);		
                for (int i = 0; i < cPositionNotifiesRef.Length; i++)
                    cPositionNotifiesRef[i].__MarshalFree(ref cPositionNotifiesRef__[i]);
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSound3DListener8 interface is used to retrieve and set parameters that describe a listener's position, orientation, and listening environment in 3D space.</p><p>The interface can be obtained by calling the IDirectSoundBuffer8::QueryInterface method on a primary buffer created with the <see cref="SharpDX.DirectSound.BufferFlags.Control3D"/> flag.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSound3DListener8 interface exposes the following methods, arranged by category.</p>Batch Parameters<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound3DListener8::CommitDeferredSettings </td><td>The CommitDeferredSettings method commits any deferred settings made since the last call to this method.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::GetAllParameters </td><td>The GetAllParameters method retrieves all 3D parameters of the sound environment and the listener.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::SetAllParameters </td><td>The SetAllParameters method sets all 3D parameters of the sound environment and the listener.	
    /// </td></tr> </table>Global Sound Properties<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound3DListener8::GetDistanceFactor </td><td>The GetDistanceFactor method retrieves the distance factor, which is the number of meters in a vector unit.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::GetDopplerFactor </td><td>The GetDopplerFactor method retrieves the multiplier for the Doppler effect.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::GetRolloffFactor </td><td>The GetRolloffFactor method retrieves the rolloff factor, which determines the rate of attenuation over distance.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::SetDistanceFactor </td><td>The SetDistanceFactor method sets the distance factor, which is the number of meters in a vector unit.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::SetDopplerFactor </td><td>The SetDopplerFactor method sets the multiplier for the Doppler effect.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::SetRolloffFactor </td><td>The SetRolloffFactor method sets the rolloff factor, which determines the rate of attenuation over distance.	
    /// </td></tr> </table>Listener Properties<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSound3DListener8::GetOrientation </td><td>The GetOrientation method retrieves the orientation of the listener's head.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::GetPosition </td><td>The GetPosition method retrieves the listener's position.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::GetVelocity </td><td>The GetVelocity method retrieves the listener's velocity.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::SetOrientation </td><td>The SetOrientation method sets the orientation of the listener's head.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::SetPosition </td><td>The SetPosition method sets the listener's position.	
    /// </td></tr> <tr><td>IDirectSound3DListener8::SetVelocity </td><td>The SetVelocity method sets the listener's velocity.	
    /// </td></tr> </table><p>The LPDIRECTSOUND3DLISTENER type is defined as a reference to the <see cref="SharpDX.DirectSound.SoundListener3D"/> interface:</p><pre> typedef struct <see cref="SharpDX.DirectSound.SoundListener3D"/>  *LPDIRECTSOUND3DLISTENER;	
    /// </pre>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener']/*"/>	
    /// <msdn-id>ee418003</msdn-id>	
    /// <unmanaged>IDirectSound3DListener</unmanaged>	
    /// <unmanaged-short>IDirectSound3DListener</unmanaged-short>	
    [Guid("279afa84-4981-11ce-a521-0020af0be560")]
    public partial class SoundListener3D : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.SoundListener3D"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public SoundListener3D(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.SoundListener3D"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.SoundListener3D(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.SoundListener3D(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves all 3D parameters of the sound environment and the listener.	
        /// </summary>	
        /// <param name="listenerRef"><dd> Address of a <see cref="SharpDX.DirectSound.Listener3DSettings"/> structure that receives the state of the 3D world and listener. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::GetAllParameters([Out] DS3DLISTENER* pListener)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.Listener3DSettings listenerRef) {
            unsafe {
                var listenerRef_ = SharpDX.DirectSound.Listener3DSettings.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &listenerRef_,((void**)(*(void**)_nativePointer))[3]);		
                listenerRef = new SharpDX.DirectSound.Listener3DSettings();
                listenerRef.__MarshalFrom(ref listenerRef_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetDistanceFactor method retrieves the distance factor, which is the number of meters in a vector unit.	
        /// </summary>	
        /// <param name="flDistanceFactorRef"><dd> Address of a variable that receives the distance factor value. D3DVALUE is defined as float.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::GetDistanceFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.getdistancefactor</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::GetDistanceFactor([Out] float* pflDistanceFactor)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::GetDistanceFactor</unmanaged-short>	
        internal void GetDistanceFactor(out float flDistanceFactorRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* flDistanceFactorRef_ = &flDistanceFactorRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, flDistanceFactorRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetDopplerFactor method retrieves the multiplier for the Doppler effect.	
        /// </summary>	
        /// <param name="flDopplerFactorRef"><dd> Address of a variable that receives the Doppler factor value. D3DVALUE is defined as float.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The Doppler factor has a range of DS3D_MINDOPPLERFACTOR (no Doppler effects) to DS3D_MAXDOPPLERFACTOR (defined as 10 times the Doppler effects found in the real world). The default value is DS3D_DEFAULTDOPPLERFACTOR (1.0).</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::GetDopplerFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.getdopplerfactor</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::GetDopplerFactor([Out] float* pflDopplerFactor)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::GetDopplerFactor</unmanaged-short>	
        internal void GetDopplerFactor(out float flDopplerFactorRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* flDopplerFactorRef_ = &flDopplerFactorRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, flDopplerFactorRef_,((void**)(*(void**)_nativePointer))[5]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetOrientation method retrieves the orientation of the listener's head.	
        /// </summary>	
        /// <param name="vOrientFrontRef"><dd> Address of a <see cref="SharpDX.Mathematics.Interop.RawVector3"/> structure that receives the listener's front orientation vector. </dd></param>	
        /// <param name="vOrientTopRef"><dd> Address of a <see cref="SharpDX.Mathematics.Interop.RawVector3"/> structure that receives the listener's top orientation vector. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The front vector points in the direction of the listener's nose, and the top vector points up from the top of the listener's head. By default, the front vector is (0,0,1.0) and the top vector is (0,1.0,0).</p> <p>The values returned are not necessarily the same as those set by using SetOrientation. DirectSound normalizes orientation vectors so that they are at right angles and have a magnitude of less than or equal to 1.0.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::GetOrientation']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.getorientation</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::GetOrientation([Out] D3DVECTOR* pvOrientFront,[Out] D3DVECTOR* pvOrientTop)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::GetOrientation</unmanaged-short>	
        internal void GetOrientation(out SharpDX.Mathematics.Interop.RawVector3 vOrientFrontRef, out SharpDX.Mathematics.Interop.RawVector3 vOrientTopRef) {
            unsafe {
                vOrientFrontRef = new SharpDX.Mathematics.Interop.RawVector3();
                vOrientTopRef = new SharpDX.Mathematics.Interop.RawVector3();
                SharpDX.Result __result__;
                fixed (void* vOrientFrontRef_ = &vOrientFrontRef)
                    fixed (void* vOrientTopRef_ = &vOrientTopRef)
                        __result__= 
        				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, vOrientFrontRef_, vOrientTopRef_,((void**)(*(void**)_nativePointer))[6]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetPosition method retrieves the listener's position.	
        /// </summary>	
        /// <param name="vPositionRef"><dd> Address of a <see cref="SharpDX.Mathematics.Interop.RawVector3"/> structure that receives the listener's position vector. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>By default, measurement units are meters, but this can be changed by calling the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::GetPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.getposition</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::GetPosition([Out] D3DVECTOR* pvPosition)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::GetPosition</unmanaged-short>	
        internal void GetPosition(out SharpDX.Mathematics.Interop.RawVector3 vPositionRef) {
            unsafe {
                vPositionRef = new SharpDX.Mathematics.Interop.RawVector3();
                SharpDX.Result __result__;
                fixed (void* vPositionRef_ = &vPositionRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, vPositionRef_,((void**)(*(void**)_nativePointer))[7]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetRolloffFactor method retrieves the rolloff factor, which determines the rate of attenuation over distance.	
        /// </summary>	
        /// <param name="flRolloffFactorRef"><dd> Address of a variable that receives the rolloff factor. D3DVALUE is defined as float.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The rolloff factor has a range of DS3D_MINROLLOFFFACTOR (no rolloff) to DS3D_MAXROLLOFFFACTOR (defined as 10 times the rolloff found in the real world). The default value is DS3D_DEFAULTROLLOFFFACTOR (1.0). For more information, see Rolloff Factor.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::GetRolloffFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.getrollofffactor</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::GetRolloffFactor([Out] float* pflRolloffFactor)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::GetRolloffFactor</unmanaged-short>	
        internal void GetRolloffFactor(out float flRolloffFactorRef) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* flRolloffFactorRef_ = &flRolloffFactorRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, flRolloffFactorRef_,((void**)(*(void**)_nativePointer))[8]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetVelocity method retrieves the listener's velocity.	
        /// </summary>	
        /// <param name="vVelocityRef"><dd> Address of a <see cref="SharpDX.Mathematics.Interop.RawVector3"/> structure that receives the listener's velocity. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>Velocity is used only for calculating Doppler effect. It does not change the listener's position. To move the listener, use the SetPosition method.</p> <p>The default velocity is (0,0,0).</p> <p>By default, measurement units are meters per second, but this can be changed by calling the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::GetVelocity']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.getvelocity</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::GetVelocity([Out] D3DVECTOR* pvVelocity)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::GetVelocity</unmanaged-short>	
        internal void GetVelocity(out SharpDX.Mathematics.Interop.RawVector3 vVelocityRef) {
            unsafe {
                vVelocityRef = new SharpDX.Mathematics.Interop.RawVector3();
                SharpDX.Result __result__;
                fixed (void* vVelocityRef_ = &vVelocityRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, vVelocityRef_,((void**)(*(void**)_nativePointer))[9]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets all 3D parameters of the sound environment and the listener.	
        /// </summary>	
        /// <param name="cListenerRef"><dd> Address of a <see cref="SharpDX.DirectSound.Listener3DSettings"/> structure that contains information describing all 3D listener parameters. </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::SetAllParameters([In] const DS3DLISTENER* pcListener,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(SharpDX.DirectSound.Listener3DSettings cListenerRef, int apply) {
            unsafe {
                var cListenerRef_ = SharpDX.DirectSound.Listener3DSettings.__NewNative();
                cListenerRef.__MarshalTo(ref cListenerRef_);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &cListenerRef_, apply,((void**)(*(void**)_nativePointer))[10]);		
                cListenerRef.__MarshalFree(ref cListenerRef_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetDistanceFactor method sets the distance factor, which is the number of meters in a vector unit.	
        /// </summary>	
        /// <param name="distanceFactor"><dd> Distance factor. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The distance factor has a range of DS3D_MINDISTANCEFACTOR to DS3D_MAXDISTANCEFACTOR, defined in Dsound.h as FLT_MIN and FLT_MAX respectively. The default value is DS3D_DEFAULTDISTANCEFACTOR, or 1.0.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::SetDistanceFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.setdistancefactor</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::SetDistanceFactor([In] float flDistanceFactor,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::SetDistanceFactor</unmanaged-short>	
        internal void SetDistanceFactor(float distanceFactor, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, distanceFactor, apply,((void**)(*(void**)_nativePointer))[11]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetDopplerFactor method sets the multiplier for the Doppler effect.	
        /// </summary>	
        /// <param name="dopplerFactor"><dd> Doppler factor. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The Doppler factor has a range of DS3D_MINDOPPLERFACTOR (no Doppler effects) to DS3D_MAXDOPPLERFACTOR (defined as 10 times the Doppler effects found in the real world). The default value is DS3D_DEFAULTDOPPLERFACTOR (1.0).</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::SetDopplerFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.setdopplerfactor</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::SetDopplerFactor([In] float flDopplerFactor,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::SetDopplerFactor</unmanaged-short>	
        internal void SetDopplerFactor(float dopplerFactor, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dopplerFactor, apply,((void**)(*(void**)_nativePointer))[12]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetOrientation method sets the orientation of the listener's head.	
        /// </summary>	
        /// <param name="xFront"><dd> Value that specifies the x coordinate of the front orientation vector. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="yFront"><dd> Value that specifies the y coordinate of the front orientation vector. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="zFront"><dd> Value that specifies the z coordinate of the front orientation vector. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="xTop"><dd> Value that specifies the x coordinates of the top orientation vector. </dd></param>	
        /// <param name="yTop"><dd> Value that specifies the y coordinates of the top orientation vector. </dd></param>	
        /// <param name="zTop"><dd> Value that specifies the z coordinates of the top orientation vector. </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The front vector points in the direction of the listener's nose, and the top vector points up from the top of the listener's head. By default, the front vector is (0,0,1.0) and the top vector is (0,1.0,0).</p> <p>The top vector must be at right angles to the front vector. If necessary, DirectSound adjusts the top vector after setting the front vector.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::SetOrientation']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.setorientation</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::SetOrientation([In] float xFront,[In] float yFront,[In] float zFront,[In] float xTop,[In] float yTop,[In] float zTop,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::SetOrientation</unmanaged-short>	
        internal void SetOrientation(float xFront, float yFront, float zFront, float xTop, float yTop, float zTop, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, xFront, yFront, zFront, xTop, yTop, zTop, apply,((void**)(*(void**)_nativePointer))[13]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetPosition method sets the listener's position.	
        /// </summary>	
        /// <param name="x"><dd> Value that specifies the x coordinate of the listener's position vector. Note that DirectSound may adjust this value to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="y"><dd> Value that specifies the y coordinate of the listener's position vector. Note that DirectSound may adjust this value to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="z"><dd> Value that specifies the z coordinate of the listener's position vector. Note that DirectSound may adjust this value to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>By default, measurement units are meters, but this can be changed by calling the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::SetPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.setposition</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::SetPosition([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::SetPosition</unmanaged-short>	
        internal void SetPosition(float x, float y, float z, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, x, y, z, apply,((void**)(*(void**)_nativePointer))[14]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetRolloffFactor method sets the rolloff factor, which determines the rate of attenuation over distance.	
        /// </summary>	
        /// <param name="rolloffFactor"><dd> Rolloff factor. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following:  <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>The rolloff factor has a range of DS3D_MINROLLOFFFACTOR (no rolloff) to DS3D_MAXROLLOFFFACTOR (defined as 10 times the rolloff found in the real world). The default value is DS3D_DEFAULTROLLOFFFACTOR (1.0). For more information, see Rolloff Factor.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::SetRolloffFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.setrollofffactor</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::SetRolloffFactor([In] float flRolloffFactor,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::SetRolloffFactor</unmanaged-short>	
        internal void SetRolloffFactor(float rolloffFactor, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, rolloffFactor, apply,((void**)(*(void**)_nativePointer))[15]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The SetVelocity method sets the listener's velocity.	
        /// </summary>	
        /// <param name="x"><dd> Value that specifies the x coordinate of the listener's velocity vector. DirectSound may adjust this value to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="y"><dd> Value that specifies the y coordinate of the listener's velocity vector. DirectSound may adjust this value to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="z"><dd> Value that specifies the z coordinate of the listener's velocity vector. DirectSound may adjust this value to prevent floating-point overflow. D3DVALUE is defined as float.  </dd></param>	
        /// <param name="apply"><dd> Value that specifies when the setting should be applied. This value must be one of the following: <table> <tr><td>Value</td><td>Description</td></tr> <tr><td>DS3D_DEFERRED</td><td>Settings are not applied until the application calls the CommitDeferredSettings method. This allows the application to change several settings and generate a single recalculation.</td></tr> <tr><td>DS3D_IMMEDIATE</td><td>Settings are applied immediately, causing the system to recalculate the 3D coordinates for all 3D sound buffers.</td></tr> </table> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <remarks>	
        /// <p>Velocity is used only for Doppler effects. It does not actually move the listener. To change the listener's position, use the SetPosition method. The default velocity is (0,0,0).</p> <p>By default, measurement units are meters per second, but this can be changed by calling the SetDistanceFactor method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::SetVelocity']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.setvelocity</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::SetVelocity([In] float x,[In] float y,[In] float z,[In] unsigned int dwApply)</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::SetVelocity</unmanaged-short>	
        internal void SetVelocity(float x, float y, float z, int apply) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, x, y, z, apply,((void**)(*(void**)_nativePointer))[16]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The CommitDeferredSettings method commits any deferred settings made since the last call to this method.	
        /// </summary>	
        /// <returns><p>If the method succeeds, the return value is DS_OK.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSound3DListener::CommitDeferredSettings']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsound3dlistener8.idirectsound3dlistener8.commitdeferredsettings</msdn-id>	
        /// <unmanaged>HRESULT IDirectSound3DListener::CommitDeferredSettings()</unmanaged>	
        /// <unmanaged-short>IDirectSound3DListener::CommitDeferredSettings</unmanaged-short>	
        public void CommitDeferredSettings() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[17]);		
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>The IDirectSoundFXWavesReverb8 interface is used to set and retrieve effect parameters on a buffer that supports Waves reverberation.</p><p>This interface is obtained by calling GetObjectInPath on the buffer that supports the effect.</p><p>In addition to the methods inherited from <see cref="SharpDX.ComObject"/>, the IDirectSoundFXWavesReverb8 interface exposes the following methods.</p>IDirectSoundFXWavesReverb8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectSoundFXWavesReverb8::GetAllParameters </td><td>The GetAllParameters method retrieves the music reverberation parameters of a buffer.	
    /// </td></tr> <tr><td>IDirectSoundFXWavesReverb8::SetAllParameters </td><td>The SetAllParameters method sets the music reverberation parameters of a buffer.	
    /// </td></tr> </table><p>The Waves reverberation DMO is based on the Waves MaxxVerb technology, which is licenced to Microsoft.</p>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXWavesReverb']/*"/>	
    /// <msdn-id>ee418241</msdn-id>	
    /// <unmanaged>IDirectSoundFXWavesReverb</unmanaged>	
    /// <unmanaged-short>IDirectSoundFXWavesReverb</unmanaged-short>	
    [Guid("46858c3a-0dc6-45e3-b760-d4eef16cb325")]
    public partial class WavesReverb : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectSound.WavesReverb"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public WavesReverb(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectSound.WavesReverb"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectSound.WavesReverb(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectSound.WavesReverb(nativePointer);
		}
        
        
        /// <summary>	
        /// The GetAllParameters method retrieves the music reverberation parameters of a buffer.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXWavesReverb::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxwavesreverb8.idirectsoundfxwavesreverb8.getallparameters</msdn-id>	
        /// <unmanaged>GetAllParameters / SetAllParameters</unmanaged>	
        /// <unmanaged-short>GetAllParameters</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectSoundFXWavesReverb::GetAllParameters([Out] DSFXWavesReverb* pDsFxWavesReverb)</unmanaged>
        public SharpDX.DirectSound.WavesReverbSettings AllParameters {
                get { SharpDX.DirectSound.WavesReverbSettings __output__; GetAllParameters(out __output__); return __output__; }
                set { SetAllParameters(value); }
        }
        
        /// <summary>	
        /// The SetAllParameters method sets the music reverberation parameters of a buffer.	
        /// </summary>	
        /// <param name="cDsFxWavesReverbRef"><dd> Address of a <see cref="SharpDX.DirectSound.WavesReverbSettings"/> structure that specifies the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXWavesReverb::SetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxwavesreverb8.idirectsoundfxwavesreverb8.setallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXWavesReverb::SetAllParameters([In] const DSFXWavesReverb* pcDsFxWavesReverb)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXWavesReverb::SetAllParameters</unmanaged-short>	
        internal void SetAllParameters(SharpDX.DirectSound.WavesReverbSettings cDsFxWavesReverbRef) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, &cDsFxWavesReverbRef,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// The GetAllParameters method retrieves the music reverberation parameters of a buffer.	
        /// </summary>	
        /// <param name="dsFxWavesReverbRef"><dd> Address of a <see cref="SharpDX.DirectSound.WavesReverbSettings"/> structure that receives the effect parameters. </dd></param>	
        /// <returns><p>If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectSoundFXWavesReverb::GetAllParameters']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectsoundfxwavesreverb8.idirectsoundfxwavesreverb8.getallparameters</msdn-id>	
        /// <unmanaged>HRESULT IDirectSoundFXWavesReverb::GetAllParameters([Out] DSFXWavesReverb* pDsFxWavesReverb)</unmanaged>	
        /// <unmanaged-short>IDirectSoundFXWavesReverb::GetAllParameters</unmanaged-short>	
        internal void GetAllParameters(out SharpDX.DirectSound.WavesReverbSettings dsFxWavesReverbRef) {
            unsafe {
                dsFxWavesReverbRef = new SharpDX.DirectSound.WavesReverbSettings();
                SharpDX.Result __result__;
                fixed (void* dsFxWavesReverbRef_ = &dsFxWavesReverbRef)
                    __result__= 
    				SharpDX.DirectSound.LocalInterop.Calliint(_nativePointer, dsFxWavesReverbRef_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
    }
}
